首页 > 代码库 > (十二)ASP.NET MVC 数据验证
(十二)ASP.NET MVC 数据验证
ASP.NET MVC 会自动根据属性的类型进行基本的校验,比如 int 类型的属性,在提交非整数类型的数据的时候就会报错。在 Action 中可以根据 ModelState.IsValid 进行判断是否验证通过,如果没有通过,使用下面的方法可以获取到报错信息:
public static string GetValidMsg(ModelStateDictionary modelState) { StringBuilder sb = new StringBuilder(); //遍历所有的属性 foreach (var key in modelState.Keys) { //如果当前属性验证通过,则直接下一个属性 if(modelState[key].Errors.Count <=0) { continue; } sb.Append($"属性【{key}】错误:"); //遍历当前属性的所有错误验证信息 foreach (var error in modelState[key].Errors) { sb.AppendLine(error.ErrorMessage); } } return sb.ToString(); }
注:对于 ModelStateDictionary modelState, 要使用 System.Web.Mvc namespace 下的类。
ASP.NET MVC 提供了在服务端验证请求数据的功能,只要在对应 Model的属性上标注 Attribute 就可以了。
常用验证 Attribute:
- [Required]:必填的
- [StringLength(100)]:字符串最大长度100
- [StringLength(100, MininumLength=10)]:字符串长度在10至100之间
- [RegularExpression("正则表达式")]:使用正则表达式进行匹配
- [Range(35,80)]:数值范围在35至88
- [Compare("Password")]:标注这个 Attribute的属性要跟 Password 属性的值一样
- [EmailAddress]:要符合邮箱格式
验证 Attribute 上都有 ErrorMessage 属性,可以用来自定义报错信息,ErrorMessage 中可以用 {0} 作为属性名的占位。
对于有些验证规则,我们可以进行自定义。比如验证QQ号码:
//ValidationAttribute 在System.ComponentModel.DataAnnotations 命名空间下 public class QQNumberAttribute:ValidationAttribute { public QQNumberAttribute():base(@"^d{5,10}$") { this.ErrorMessage = "{0}属性不是合法的 QQ 号"; } }
也可以重写 IsValid() 方法:
public class QQNumberAttribute : ValidationAttribute { public QQNumberAttribute() { this.ErrorMessage = "{0}属性不是合法的 QQ 号"; }
public override bool IsValid(object value) { bool flag = Regex.IsMatch(value.ToString(), @"^d{5,10}$"); return flag; } }
(十二)ASP.NET MVC 数据验证
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。