MVC自验证和正则验证attributes

在使用MVC框架时,其Model层自带了验证,可以使我们省去自己写一大堆的js数据验证代码,或者后台代码。我们仅仅需求给model加上Model类的各属性加上对应的验证标识表记标帜(Attributes)就可以让MVC3框架帮我们完成验证;当然这自带的验证也是在前端完成的,这样避免了不必要的服务器响应以及对对服务器资源的占用,这里自然是需要js脚本的支持的。MVC自带验证基于jquery.所以前台还是要引入jquery:

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>  

验证消息的显示有两种,一种是ValidationSummary,它可以显示一份验证消息的汇总,包含从后台Action里返回的消息。
@Html.ValidationSummary(true, "Login was unsuccessful. Please correct the errors and try again.")  
另一种是Model中各属性对应HTML控件的验证消息:
@Html.ValidationMessageFor(m => m.UserName);

附上几个常用的验证标识表记标帜(Attributes)

1. 必填字段
[Required]
2. 字段长度
至多n位:
[StringLength(160)]
请求至少n位:
[StringLength(160, MinimumLength=3)]
3.正则验证
[RegularExpression(@”[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+/.[A-Za-z]{2,4}”)]
4. 局限
[Range(35,44)]
小数的景象:
[Range(typeof(decimal), “0.00”, “49.99”)]


这里面最让我无语的就是正则验证,由于之前很少使用正则验证,导致在定义一个属性要去掉特殊字符时,纠结了半天,从头到尾看了一遍正则的语法才弄出来;

先贴上字段属性去掉特殊字符的正则代码:

  [Required(AllowEmptyStrings = false, ErrorMessage = "项目名称不能为空")]
  [StringLength(20, ErrorMessage = "项目名称长度在2-20之间", MinimumLength = 2)]       
  [Display(Name = "项目名称")]        
  [RegularExpression(@"[^':;\^\*\?@\!#\$%&\+=\{\}\[\]<>\,\.\【\】\《\》\。\-\-\|]+", ErrorMessage = "{0}不能有特殊字符")]
  public string ProjectName { get; set; }

这里的正则代码解释下,这个正则代码去掉了:   ^':;*?@!#$%&+={}[]<>,.【】《》。--|这些常见的特殊字符;

"[^]"这个表示匹配任何不含有^后面带有的字符。

由于正则表达式的语法规则好多的就是这些特殊字符,所以要匹配这些字符,必须把这些字符转义,否则正则分析器会把特殊字符当成语法执行,这也就是为什么这个表达式中出现了很多的“\”,这个“\"就是正则里面的转义符。

这里有个过程需要注意的是,像这些中文的符合,他不是正则语法关键字符,但是也要使用转义符把他转义掉,否则也会出现你想不到的情况。


总语:尼玛,正则还是要自己看他的语法规则写,网上的都是别人特定的业务需求。最好自己写;


以下摘自百度百科:

附上正则表达式的关键字含义和语法:

元字符
描述
\
将下一个字符标记符、或一个向后引用、或一个八进制转义符。例如,“\\n”匹配\n。“\n”匹配换行符。序列“\\”匹配“\”而“\(”则匹配“(”。即相当于多种编程语言中都有的“转义字符”的概念。
^
匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。
$
匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。
*
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值