1. 数据库操作,DAL 层:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Common.DataCommon;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
namespace DAL.DAL.Movie
{
public class MovieDAL
{
private readonly SqlHelper sh = new SqlHelper();
//pager query movie list
public DataTable QueryMovie(int currPage,int pageSize) {
DataTable dt = null;
string procName = "sp_Movie_GetPagerList";
try {
SqlParameter[] sps = {
new SqlParameter("@currPage",SqlDbType.Int),
new SqlParameter("@pageSize",SqlDbType.Int)
};
sps[0].Value = currPage;
sps[1].Value = pageSize;
dt = sh.ExecuteProcWithReturn(procName, sps);
}catch(Exception ex){
throw ex;
}
return dt;
}
//get the movie count
public Int32 GetMovieCount()
{
Int32 count = 1;
string procName = "sp_Movie_GetCount";
try
{
DataTable dt = sh.ExecuteProcWithReturn(procName, null);
if (null != dt){
count = Convert.ToInt32(dt.Rows[0]["mCount"]);
}
}
catch (Exception ex)
{
throw ex;
}
return count;
}
//get the movie detail
public DataTable GetMovie(string movieId)
{
DataTable dt = null;
string procName = "sp_Movie_GetModel";
try
{
SqlParameter[] sps = {
new SqlParameter("@in_Id",SqlDbType.VarChar)
};
sps[0].Value = movieId;
dt = sh.ExecuteProcWithReturn(procName, sps);
}
catch (Exception ex)
{
throw ex;
}
return dt;
}
//upload movie
public bool UpdateMovie(Model.Movie movie) {
bool flag = false;
string callName = "sp_Movie_Update";
try {
SqlParameter[] sps = {
new SqlParameter("@in_Id",SqlDbType.VarChar),
new SqlParameter("@in_Title",SqlDbType.NVarChar),
new SqlParameter("@in_ReleaseDate",SqlDbType.Date),
new SqlParameter("@in_Category",SqlDbType.NVarChar),
new SqlParameter("@in_Price",SqlDbType.Money)
};
sps[0].Value = movie.Id;
sps[1].Value = movie.Title;
sps[2].Value = movie.ReleaseDate;
sps[3].Value = movie.Category;
sps[4].Value = movie.Price;
flag = sh.ExecuteProcWithoutReturn(callName, sps);
}catch(Exception ex){
throw ex;
}
return flag;
}
//delete moive
public bool DeleteMovie(string movieId) {
bool flag = false;
string callName = "sp_Movie_Delete";
try {
SqlParameter[] sps = {
new SqlParameter("@in_Id",SqlDbType.VarChar)
};
sps[0].Value = movieId;
flag = sh.ExecuteProcWithoutReturn(callName, sps);
}catch(Exception ex){
throw ex;
}
return flag;
}
//save movie
public bool SaveMovie(Model.Movie movie) {
bool flag = false;
string callName = "sp_Movie_Add";
try
{
SqlParameter[] sps = {
new SqlParameter("@in_Id",SqlDbType.VarChar),
new SqlParameter("@in_Title",SqlDbType.NVarChar),
new SqlParameter("@in_ReleaseDate",SqlDbType.Date),
new SqlParameter("@in_Category",SqlDbType.NVarChar),
new SqlParameter("@in_Price",SqlDbType.Money)
};
sps[0].Value = movie.Id;
sps[1].Value = movie.Title;
sps[2].Value = movie.ReleaseDate;
sps[3].Value = movie.Category;
sps[4].Value = movie.Price;
flag = sh.ExecuteProcWithoutReturn(callName, sps);
}
catch (Exception ex)
{
throw ex;
}
return flag;
}
}
2. 控制层 Controller
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using BLL.Movie.BLL;
using Model;
using Model.VO;
namespace RelationPro.Controllers
{
public class MovieController : Controller
{
//
// GET: /Movie/
private readonly MovieBLL movieBLL = new MovieBLL();
public ActionResult Index(int currPage=1)
{
Page p = new Page();
p.pageSize = 3;
Int32 lastPage =(Int32)Math.Ceiling(movieBLL.GetMovieCount()/(double)p.pageSize);
p.lastPage = lastPage;
if(currPage<1){
currPage = 1;
}
if (currPage> lastPage)
{
currPage = lastPage;
}
p.currPage = currPage;
List<Movie> movieList = movieBLL.QueryMovie(currPage, p.pageSize);
ViewData["movieList"] = movieList;
ViewData["page"] = p;
return View(movieList);
}
public ActionResult Edit(string movieId)
{
//取需要编辑的信息
Model.Movie movie = movieBLL.GetMovie(movieId);
ViewData["movie"] = movie;
return View(movie);
}
[HttpPost]
public ActionResult Edit(Model.Movie movie)
{
//更新
bool flag = movieBLL.UpdateMovie(movie);
if(flag){
return RedirectToAction("/Index");
}
ViewData["msg"] = "更新失败";
return View(movie);
}
public ActionResult Delete(int currPage,string movieId)
{
//根据id删除Movie
bool flag = movieBLL.DeleteMovie(movieId);
Session["msg"] = "";
if (!flag)
{
Session["msg"] = "删除失败.";
}
return RedirectToAction("/index/"+currPage);
}
public ActionResult Create() {
return View();
}
[HttpPost]
public ActionResult Create(Movie movie) {
//save the movie
bool flag = movieBLL.SaveMovie(movie);
if(flag){
return RedirectToAction("/Index/");
}
ViewData["msg"] = "创建失败.";
return View("Create");
}
}
}
3. 前台页面
1. Create.aspx
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Create</title>
<script type="text/javascript">
function back() {
window.location.href = "/Movie/Index";
}
</script>
</head>
<body>
<div>
<form action="" method="post">
<table align="center" style="width:60%;">
<tr>
<td>Title:</td>
<td>
<input name="Id" value="<%=Guid.NewGuid().ToString() %>" type="hidden"/>
<input name="Title"/>
</td>
</tr>
<tr>
<td>ReleaseDate:</td>
<td><input name="ReleaseDate"/></td>
</tr>
<tr>
<td>Category:</td>
<td><input name="Category"/></td>
</tr>
<tr>
<td>Price:</td>
<td><input name="Price"/></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Submit" />
<input type="button" onclick="back();" value="Calcel"/> <%=ViewData["msg"]%>
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
}
2. Edit.aspx
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<Model.Movie>" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Edit</title>
<style type="text/css">
.style1
{
width: 167px;
}
</style>
<script type="text/javascript">
function back() {
window.location.href = "/Movie/Index";
}
</script>
</head>
<body>
<div>
<form action="/Movie/Edit/-1" method="post">
<table style="width: 60%;">
<tr>
<td class="style1">
Title:
</td>
<td>
<input name="Id" type="hidden" value="<%=Model.Id %>" />
<input name="Title" value="<%=Model.Title %>" />
</td>
</tr>
<tr>
<td class="style1">
ReleaseDate:
</td>
<td>
<input name="ReleaseDate" value="<%=Model.ReleaseDate %>" />
</td>
</tr>
<tr>
<td class="style1">
Category:
</td>
<td>
<input name="Category" value="<%=Model.Category %>" />
</td>
</tr>
<tr>
<td class="style1">
Price:
</td>
<td>
<input name="Price" value='<%= Model.Price %>' />
</td>
</tr>
<tr>
<td><input type="submit" value="Update"/></td>
<td><input type="button" onclick="back()" value="Cancel" style="height: 21px"/> <%=ViewData["msg"] %></td>
</tr>
</table>
</form>
</div>
</body>
</html>
3. Index.aspx
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>电影列表</title>
<style type="text/css">
.style1
{
width: 95px;
}
</style>
</head>
<body>
<div>
<a href="/Movie/Create">新建</a><br/>
<table>
<tr>
<th>标题</th>
<th>发型日期</th>
<th>总类</th>
<th>价格</th>
<th colspan="2">操作</th>
</tr>
<%
List<Movie> movieList = (List<Movie>)ViewData["movieList"];
if(null != movieList){
Model.VO.Page page = (Model.VO.Page)ViewData["page"];
foreach(Movie m in movieList){
%>
<tr>
<td><%=m.Title %></td>
<td><%=m.ReleaseDate.ToString("yyyy-MM-dd")%></td>
<td><%=m.Category %></td>
<td><%=m.Price.ToString("#0.00") %></td>
<td class="style1" colspan="2">
<a href="/Movie/Edit/1/<%=m.Id %>">编辑</a>
<a href="/Movie/Delete/<%=page.currPage %>/<%=m.Id %>">删除  <%=Session["msg"]%></a>
</td>
</tr>
<%
}
%>
<%
%>
<tr>
<td colspan="4">
<a href="/Movie/Index/1">首页</a>
<a href="/Movie/Index/<%=page.currPage-1 %>">上一页</a>
<a href="/Movie/Index/<%=page.currPage+1 %>">下一页</a>
<a href="/Movie/Index/<%=page.lastPage %>">尾页</a>
</td>
<td>当前<%=page.currPage %> :共页<%=page.lastPage %></td>
</tr>
<%
}
%>
</table>
</div>
</body>
</html>
4. routine 的配置
routes.MapRoute(
"Movie", // 路由名称
"Movie/{action}/{currPage}/{movieId}", // 带有参数的 URL
new { controller = "Movie", action = "Index", currPage = 1, movieId = UrlParameter.Optional } // 参数默认值
);
routes.MapRoute(
"Default", // 路由名称
"{controller}/{action}/{currPage}/{movieId}", // 带有参数的 URL
new { controller = "Movie", action = "Index", currPage = 1, movieId = UrlParameter.Optional } // 参数默认值
);