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

 

代码
<% foreach (var item in Model) { %>
    
        
<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

 public ActionResult Delete(int 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,效果更佳! 呵呵

实例代码:/Files/bboy/Movie.rar

 

 

posted @ 2010-01-27 21:03  -Enchant  阅读(3297)  评论(4编辑  收藏  举报