Asp.net MVC2学习笔记6-简单实例(Movie)(下)
今天我们继续完成 这个 MVC2 简单实例的剩余功能:显示明细、添加、编辑等。。。。。
一、显示明细
在 MoviewsController中的 Details方法里 右键--Add view,创建一个强类型的视图
确定后,这个明细的视图文件就已经生成。。。
此时,我们需要修改 Detials 方法,根据 传递过来的 id参数,去数据库查询我们的数据
// GET: /Movies/Details/5
public ActionResult Details(int id)
{
ViewData.Model = _dbEntities.MovieSet.First(m=>m.ID==id);
return View();
}
二、添加记录
我们看到有2个Create,第一个是返回视图页面,第二个是处理添加的逻辑。。
添加视图就比较简单了,直接在 Create方法上右键--add view,添加一个强类型的视图,内容选择Create,就完事啦,
F5 试试,添加页面是不是就出来了?
此时 我们需要修改一下页面,因为我们 ID 是自动生成的,所以这边ID应该不可以输入;
下面我们看下后台处理添加的逻辑,默认生成的 Create方法带的参数是 FormCollection,包括整个form里面的参数的集合,
这里我们修改一下参数改成我们的model:Movie,因为我们创建的是强类型,所以这里可以直接使用这个model,
这里 逻辑部分,我没有做其他判断(如:判断输入合法性),直接调用 实体数据模型,添加进数据库。。。
// POST: /Movies/Create
[HttpPost]
public ActionResult Create(Models.Movie model)
{
try
{
// TODO: Add insert logic here
_dbEntities.AddToMovieSet(model);
_dbEntities.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
这里的 [HttpPost] 属性指定是 处理 post过来的数据。。 ok,写到这里 F5起来测试一下吧
三、修改记录
与添加一样,修改也有2个edit。。创建一个强类型视图,类型edit..
代码修改1:根据 id 查询出需要修改的记录:方法同 一
// GET: /Movies/Edit/5
public ActionResult Edit(int id)
{
ViewData.Model = _dbEntities.MovieSet.First(m => m.ID == id);
return View();
}
代码修改2:添加edit逻辑,先根据 id找到movie,再赋新值,最后提交给数据库。。
这里只是举例,并没有包含其他验证部分。。
// POST: /Movies/Edit/5
[HttpPost]
public ActionResult Edit(int id, Models.Movie model)
{
try
{
// TODO: Add update logic here
Models.Movie movie = _dbEntities.MovieSet.First(m => m.ID == id);
movie.Movie_Name = model.Movie_Name;
movie.Release_Date = model.Release_Date;
_dbEntities.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
此时,我们添加、编辑功能都做好了,是不是觉得少了一个 删除?呵呵,根据上面的学习,我们就可以自己写一个啦。。。。
首先,我们在 Index.asp页面中 添加 删除的 Link
<tr>
<td>
<%= Html.ActionLink("Edit", "Edit", new { id=item.ID }) %> |
<%= Html.ActionLink("Details", "Details", new { id=item.ID })%>
<%= Html.ActionLink("Delete", "Delete", new { id=item.ID })%><!--添加删除Link-->
</td>
<td>
<%= Html.Encode(item.ID) %>
</td>
<td>
<%= Html.Encode(item.Movie_Name) %>
</td>
<td>
<%= Html.Encode(String.Format("{0:g}", item.Release_Date)) %>
</td>
</tr>
<% } %>
然后处理后台:添加一个 Delete的Action,参数就是 id
{
try
{
Models.Movie movie = _dbEntities.MovieSet.First(m => m.ID == id);
_dbEntities.DeleteObject(movie);
_dbEntities.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View("Index");
}
}
ok,F5吧,试试 Delete有没有效果?呵呵
大家有没有觉得MVC很简单啊?尤其是配合 ADO.NET Entity Framework,效果更佳! 呵呵