您的位置:首页 > 编程语言 > ASP

asp.net mvc 模型验证-最舒服的验证方式

2015-05-12 15:27 525 查看
在院子里发现http://www.cnblogs.com/yangecnu/p/3759784.html模型验证方法

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

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

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

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

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

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

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

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

模型建立:

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.ComponentModel.DataAnnotations;
namespaceModel_Validation.Models
{
publicclassUser
{
[Required(ErrorMessage="用户名不能为空")]
publicstringUserName{get;set;}

[RegularExpression("[a-z|A-Z|0-9]{6,20}",ErrorMessage="密码位数太短")]
publicstringUserPassword{get;set;}

[DataType(DataType.EmailAddress,ErrorMessage="邮件格式不正确")]
publicstringEmailAddress{get;set;}

[RangeAttribute(1,1000,ErrorMessage="评论长度1,1000")]
publicstringComments{get;set;}
}
}


模型数据操作:

[HttpPost,ModelValidationFilterAttribute]
publicJsonResultDoLogin(Models.UserUser)
{

returnJson(newobject(),JsonRequestBehavior.DenyGet);
}


ModelValidationFilterAttribute:数据验证的过滤器


publicclassModelValidationFilterAttribute:FilterAttribute,IActionFilter
{
//Summary:
//Calledaftertheactionmethodexecutes.
//
//Parameters:
//filterContext:
//Thefiltercontext.
publicvoidOnActionExecuted(ActionExecutedContextfilterContext){}
//
//Summary:
//Calledbeforeanactionmethodexecutes.
//
//Parameters:
//filterContext:
//Thefiltercontext.
publicvoidOnActionExecuting(ActionExecutingContextfilterContext)
{
var_MS=((Controller)filterContext.Controller).ModelState;
if(!_MS.IsValid)
{
var_FirstErrorField=_MS.FirstOrDefault();
stringstrHtmlId=_FirstErrorField.Key;
stringstrErrorMessage=_FirstErrorField.Value.Errors.FirstOrDefault().ErrorMessage;//这个数据你想怎么给JS都行.
}
}
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: