系列文章导航:
学习 ASP.NET MVC (第一回)理论篇
学习 ASP.NET MVC (第二回)实战篇
学习 ASP.NET MVC (第三回)实战篇
学习 ASP.NET MVC (第四回)实战篇
学习 ASP.NET MVC (第五回)理论篇
我们继续ASP.NET MVC之旅。上文中我们实现了对User信息的展示,详细信息的列表,还有错误页的实现。本文继续完成添加,修改,删除的操作。
首先我们来完成Controller的代码:
Code
//
// 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,在学习的效率上会有很大的帮助。