学习 ASP.NET MVC (第四回)实战篇

来源:互联网 发布:网店美工教材 编辑:程序博客网 时间:2024/04/30 01:17

我们继续ASP.NET MVC之旅。上文中我们实现了对User信息的展示,详细信息的列表,还有错误页的实现。本文继续完成添加,修改,删除的操作。
首先我们来完成Controller的代码:


//
        
// GET: /Users/Edit/1
        public ActionResult Edit(int id)
        {
            Users users 
= usersrepository.GetUsers(id);
            
return View(users);
        }

        
//
        
// POST: /Users/Edit/1
        [AcceptVerbs(HttpVerbs.Post)]
        
public ActionResult Edit(int id, FormCollection formValues) 
        {
            Users users 
= usersrepository.GetUsers(id);
            
try
            {
                UpdateModel(users);
                usersrepository.SaveUser();
                
return RedirectToAction("Details"new { id = users.UserID });
            }
            
catch
            {
                
foreach (var issue in users.GetRuleViolations())
                {
                    ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage);
                }
                
            }
            
return View(users);
        }

        
//
        
//GET : /Users/Create
        public ActionResult Create()
        {
            Users user
=new Users ();
            
return View(user);
        }

        
// POST: /Users/Create
        [AcceptVerbs(HttpVerbs.Post)]
        
public ActionResult Create(Users users)
        {
            
try
            {
                UpdateModel(users);
                usersrepository.AddUser(users);
                usersrepository.SaveUser();
                
return RedirectToAction("Details"new { id = users.UserID });
            }
            
catch
            {
                
foreach (var issue in users.GetRuleViolations())
                {
                    ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage);
                }
                
return View(users);
            }
        }

        
//
        
// HTTP GET: /Dinners/Delete/1
        public ActionResult Delete(int id, string BtnConfirm)
        {
            Users users 
= usersrepository.GetUsers(id);
            
if (users == null)
            {
                
return View("NotFound");
            }
            
else
            {
                usersrepository.DelUser(users);
                usersrepository.SaveUser();
                
return View("Delete");
            }
        }

我们定义了编辑,新建,删除的Controller。
接着,我们开始创建视图模板,步骤与前面创建视图模板一样。如图所示:

VS自动的为我们生成了模板,在浏览器中访问下我们的编辑页面:

点击 Save 保存按钮,将触发表单提交到/users/Edit/1 网址,并通过 HTTP POST 提交 表单中的值。下面,我们开始实现 HTTP POST 的 Edit action 方法 – 负责处理保存操作。
这里我们将 action 方法添加[AcceptVerbs] 属性后,ASP.NET MVC 根据进来的 HTTP 动作,自动分发请求给合适的 action 方法。HTTP POST 请求/Dinners/Edit/[id] 将有上述 Edit 方法负责处理,然而所有其他的HTTP 请求/Dinners/Edit/[id] 将有之前定义的 Edit 方法负责(该方法没有[AcceptVerbs]属性)。也就是上面Controller中定义的Edit重载方法。
理解 ModelState 和验证 HTML 辅助方法
Controller类有一个 ModelState 属性集合,可以用来提示传递到视图的 model对象是否有错误。ModelStat中 Error 记录识别模型属性的名称和错误信息,并允许指定友好的错误信息。HTML 辅助方法,如 Html.TextBox(),在输出内容时,会检查 ModelState 集合。如果发现该属性有异常或错误,将呈现用户输入的内容和 CSS 错误类。
接下来我们来添加Create视图模板:

运行程序:

和Edit模板的实现功能类似。我们需要将Create 的方法声明[AcceptVerbs] 属性。方法中创建新的 Dinner 对象,并使用 UpdateModel() 辅助方法(就像 Edit 方法一样),将表单传递过来的值赋给 users对象。接着,添加 users对象到 UsersRepository,并持久化到数据库,并重定向到 Details action 方法。
最后的,我们来实现删除的功能。添加Delete模板:

action 方法试图检索将要删除的 Users对象。如果 users对象存在,就呈现该 users对象的视图。如果对象不存在(或者已经删除了),将返回一个 NotFound 的视图,之前我们已经创建了这个视图。
这里我们可以简单的对页面做一些修改,提示用户删除成功等信息。

至此,一个简单的用户管理就完成了,我们可以通过ASP.NET MVC实现对用户的添加,删除,修改,信息的显示等功能。新手可以参看实例学习MVC,在学习的效率上会有很大的帮助。

原创粉丝点击