在院子里发现 http://www.cnblogs.com/yangecnu/p/3759784.html 模型验证方法

1. 一般方法 繁琐, 无数的if else, 在炎炎夏天,我见过一个验证方法3000行代码的,还要改需求,想必您能了解作为coder当时的心情。

2. 使用第三方框架,功能过于繁琐,还得自己学习,没必要

3. Code Contract 不熟悉,貌似和第三方不同的是:MS提供的,先得高大上一点而已,本质一样

下面的方法,既简单,维护也很方便。代码涉及点:

1) 模型文件代码-添加验证规则,至于你想怎么添加,可以自定义Attribute,或者使用FCL中自带的(本例即是)

2)模型数据操作的Action-在需要验证的Actiond中注入属性或者controller或者全局也行

3)过滤器-添加错误捕捉,处理

维护时,只需要修改各个业务模型中每个字段的验证规则即可

模型建立:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace Model_Validation.Models
{
public class User
{
[Required(ErrorMessage = "用户名不能为空")]
public string UserName { get; set; } [RegularExpression("[a-z|A-Z|0-9]{6,20}", ErrorMessage = "密码位数太短")]
public string UserPassword { get; set; } [DataType(DataType.EmailAddress, ErrorMessage = "邮件格式不正确")]
public string EmailAddress { get; set; } [RangeAttribute(, , ErrorMessage = "评论长度1,1000")]
public string Comments { get; set; }
}
}

模型数据操作:

 [HttpPost, ModelValidationFilterAttribute]
public JsonResult DoLogin(Models.User User)
{ return Json(new object(), JsonRequestBehavior.DenyGet);
}
ModelValidationFilterAttribute:数据验证的过滤器
 public class ModelValidationFilterAttribute : FilterAttribute,IActionFilter
{
// Summary:
// Called after the action method executes.
//
// Parameters:
// filterContext:
// The filter context.
public void OnActionExecuted(ActionExecutedContext filterContext) { }
//
// Summary:
// Called before an action method executes.
//
// Parameters:
// filterContext:
// The filter context.
public void OnActionExecuting(ActionExecutingContext filterContext)
{
var _MS = ((Controller)filterContext.Controller).ModelState;
if (!_MS.IsValid)
{
var _FirstErrorField = _MS.FirstOrDefault();
string strHtmlId = _FirstErrorField.Key;
string strErrorMessage = _FirstErrorField.Value.Errors.FirstOrDefault().ErrorMessage;//这个数据你想怎么给JS都行.
}
}
}
 

asp.net mvc 模型验证-最舒服的验证方式的更多相关文章

  1. ASP.NET没有魔法——ASP.NET MVC 模型验证

    在前面的文章中介绍了用户的注册及登录功能,在注册用户时可以通过代码的形式限制用户名及密码的格式,如果不符合要求那么就无法完成操作,如下图: 该功能的原理是Identity基于的Entity Frame ...

  2. ASP.NET MVC - 模型验证

    ASP.NET MVC - 模型验证(Model verification) 模型验证原理浅析 模型验证用到了模型绑定器.模型验证器(System.Web.Mvc.DataAnnotationsMod ...

  3. asp.net mvc 模型验证组件——FluentValidation

    asp.net mvc 模型验证组件——FluentValidation 示例 using FluentValidation; public class CustomerValidator: Abst ...

  4. ASP.NET MVC模型绑定的6个建议(转载)

    ASP.NET MVC模型绑定的6个建议 发表于2011-08-03 10:25| 来源博客园| 31 条评论| 作者冠军 validationasp.netmvc.netasp 摘要:ASP.NET ...

  5. ASP.NET MVC 5 学习教程:添加验证

    原文 ASP.NET MVC 5 学习教程:添加验证 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控 ...

  6. 【译】ASP.NET MVC 5 教程 - 10:添加验证

    原文:[译]ASP.NET MVC 5 教程 - 10:添加验证 在本节中,我们将为Movie模型添加验证逻辑,并确认验证规则在用户试图使用程序创建和编辑电影时有效. DRY 原则 ASP.NET M ...

  7. ASP.NET没有魔法——ASP.NET MVC 模型绑定

    在My Blog中已经有了文章管理功能,可以发布和修改文章,但是对于文章内容来说,这里缺少最重要的排版功能,如果没有排版的博客很大程度上是无法阅读的,由于文章是通过浏览器查看的,所以文章的排版其实与网 ...

  8. ASP.NET没有魔法——ASP.NET MVC 模型绑定解析(下篇)

    上一篇<ASP.NET没有魔法——ASP.NET MVC 模型绑定解析(上篇)>文章介绍了ASP.NET MVC模型绑定的相关组件和概念,本章将介绍Controller在执行时是如何通过这 ...

  9. asp.net Mvc 模型绑定项目过多会导致页面运行时间卡

    asp.net Mvc 模型绑定项目过多会导致页面运行时间卡的问题. 解决方式就是采用ModelView方式进行精简,已减少模型绑定及验证的时间.

  10. ASP.NET MVC中对Model进行分步验证的解决方法

    原文:ASP.NET MVC中对Model进行分步验证的解决方法 在我之前的文章:ASP.NET MVC2.0结合WF4.0实现用户多步注册流程中将一个用户的注册分成了四步,而这四个步骤都是在完善一个 ...

随机推荐

  1. 数论 UVA 11889

    有关数论的题目,题目大意是给你两个数a和c,c为a和另一个数b的最小公倍数,要求你求出b的最小值.由最大公约数gcd(a,b)和最小公倍数lcm(a,b)之间的关系可知,lcm(a,b)*gcd(a, ...

  2. HTML结构文档中那些基础又重要又容易被忽略的事?

    HTML结构文档中那些基础又重要又容易被忽略的事? 大部分的人,总是会做出这样下意识地判断:简单就是不重要,容易就可以直接忽略掉!其实不然,简有精髓,基石必重,岂能略而不顾!HTML结构文档的编写,可 ...

  3. 黑马程序员——JAVA基础之IO流缓冲区,转换流,字节流

    ------- android培训.java培训.期待与您交流! ---------- 字符流的缓冲区        缓冲区的出现提高了对数据的读写效率. 对应类 •  BufferedWriter ...

  4. 重放攻击(Replay Attacks)

    重放攻击(Replay Attacks)1.什么是重放攻击顾名思义,重复的会话请求就是重放攻击.可能是因为用户重复发起请求,也可能是因为请求被攻击者获取,然后重新发给服务器. 2.重放攻击的危害请求被 ...

  5. iframe的高度自适应

    http://www.cnblogs.com/snandy/p/3902337.html http://www.cnblogs.com/snandy/p/3900016.html Snandy Sto ...

  6. 第三节:视图(Views)和模板(Templates)

    目录 概览 编写视图 编辑视图实际做一些事情 抛出404异常 使用模板系统 移除在代码中的硬编码网址 Url名称的命名空间 概览 视图是Django应用的网页的“类型”,一般服务于特定的功能并且有特定 ...

  7. 黄聪:基于jQuery+JSON的省市区三级地区联动

    查看演示:http://www.helloweba.com/demo/cityselect/ 源码下载:http://files.cnblogs.com/files/huangcong/citysel ...

  8. 只适用于HTML的DOM对象

    前面,已经学习了如何对树结构进行遍历,并添加.删除.修改任何XML文档中的节点.但是,还有一些对象和属性石只适用于HTML的.列如,document.body就是一个纯HTML对象.只要HTML文档中 ...

  9. Spring Boot 性能优化

    spring 框架给企业软件开发者提供了常见问题的通用解决方案,包括那些在未来开发中没有意识到的问题.但是,它构建的 J2EE 项目变得越来越臃肿,逐渐被 Spring Boot 所替代.Spring ...

  10. EXT 省市三级联动及默认选择

    var provinceStore = Ext.create('Ext.data.Store', { fields: ['id', 'name'], proxy: { type: 'ajax', ur ...