ASP.NET MVC 入门8、ModelState与数据验证
2016-04-20 14:10
681 查看
原帖地址:http://www.cnblogs.com/QLeelulu/archive/2008/10/08/1305962.html
ViewData有一个ModelState的属性,这是一个类型为ModelStateDictionary的ModelState类型的字典集合。在进行数据验证的时候这个属性是比較实用的。在使用Html.ValidationMessage()的时候,就是从ViewData.ModelState中检測是否有指定的KEY。假设存在。就提示错误信息。比如在前一篇文章ASP.NET
MVC 入门7、Hellper与数据的提交与绑定中使用到的UpdateModel方法:
Validation
我们在Post类中重写这种方法来加入验证规则:
然后我们能够在Controller的Action中非常优雅的书写我们的代码来进行业务规则的验证:
[AcceptVerbs("POST"), ActionName("NewPost")]
public ActionResult SaveNewPost(FormCollection form)
{
Post post = new Post();
try
{
UpdateModel(post, new[] {"Title","Content","Slug"
});
}
catch
{
return View(post);
}
if (!post.IsValid)
{
foreach (string keyin post.BrokenRules.Keys)
{
ViewData.ModelState.AddModelError(key, form[key], post.BrokenRules[key]);
}
return View(post);
}
post.Save();
return ShowMsg(new List<string>()
{ "发表新随笔成功" });
}
我们注意到上面的Action中用到了一个FormCollection 的參数,这个參数系统会自己主动将Form提交过来的所有表单值(Request.Form)赋给它的。client验证能够用jQuery的验证插件来。这里就不罗嗦了。
ViewData有一个ModelState的属性,这是一个类型为ModelStateDictionary的ModelState类型的字典集合。在进行数据验证的时候这个属性是比較实用的。在使用Html.ValidationMessage()的时候,就是从ViewData.ModelState中检測是否有指定的KEY。假设存在。就提示错误信息。比如在前一篇文章ASP.NET
MVC 入门7、Hellper与数据的提交与绑定中使用到的UpdateModel方法:
Validation
我们在Post类中重写这种方法来加入验证规则:
然后我们能够在Controller的Action中非常优雅的书写我们的代码来进行业务规则的验证:
[AcceptVerbs("POST"), ActionName("NewPost")]
public ActionResult SaveNewPost(FormCollection form)
{
Post post = new Post();
try
{
UpdateModel(post, new[] {"Title","Content","Slug"
});
}
catch
{
return View(post);
}
if (!post.IsValid)
{
foreach (string keyin post.BrokenRules.Keys)
{
ViewData.ModelState.AddModelError(key, form[key], post.BrokenRules[key]);
}
return View(post);
}
post.Save();
return ShowMsg(new List<string>()
{ "发表新随笔成功" });
}
我们注意到上面的Action中用到了一个FormCollection 的參数,这个參数系统会自己主动将Form提交过来的所有表单值(Request.Form)赋给它的。client验证能够用jQuery的验证插件来。这里就不罗嗦了。
相关文章推荐
- 使用com.aspose.words将word模板转为PDF乱码解决方案(window下正常)
- AspectJ
- ASP.NET MVC Controller的激活
- asp.net web api 解决ajax跨站点post请求提交 json 数据问题
- ASP.NET中访问DataGrid中所有控件值的方法
- Asp.Net实现无限分类生成表格的方法(后台自定义输出table)
- ASP.NET 中 Button、LinkButton和ImageButton 三种控件的使用详解
- asp.net实现DataList与Repeater嵌套绑定的方法
- asp.net(C#)利用QRCode生成二维码(续)-在二维码图片中心加Logo或图像
- ZPL 打印条码、二维码及小票(中文/汉字),生成条码、二维码图片【Asp.Net】-含示例代码
- asp.net中Button按钮点击两次才执行Onclick事件的原因
- ASP.NET提示框,且根据用户选择执行不同代码的实现
- ASP.NET MVC Controller的激活
- ASP.NET中Image控件使用详解
- asp.net几种控件类型的区别
- asp.net+Ligerui实现grid导出Excel和Word的方法
- ASP.NET中HyperLink超链接控件的使用方法
- asp.net实现拒绝频繁的IP访问的方法
- atitit.软件开发GUI 布局管理优缺点总结java swing wpf web html c++ qt php asp.net winform
- ASP.NET Core的配置(2):配置模型详解