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

mvc中自定义验证逻辑

2016-04-21 17:56 429 查看
上一篇中讲解了mvc中的远程验证,也就是ajax验证,本章继续介绍mvc中的自定义特性验证方式

asp.net mvc自定义验证逻辑分为两种方式:客户端验证与服务端验证

相应的涉及到两个接口ValidationAttribute,IClientValidatable

ValidationAttibute服务端验证,IClientValidatable客户端验证

本章重点,ValidationAttribute服务器端验证。自定义特性验证必须要实现ValidationAttribute中的IsValid至少一个重载方法

public class MaxWordsAttribute : ValidationAttribute
{
private readonly int _maxWords;
//构造器
public MaxWordsAttribute(int maxWords)
{
_maxWords = maxWords;
}
//验证方法
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value != null)
{
var valueAsString = value.ToString();
if (valueAsString.Split(' ').Length > _maxWords)
{
return new ValidationResult("Too many words");
}
}
return ValidationResult.Success;
}
}

代码上面大家通过注释都能够了解,调用方式和asp.net mvc内置的验证方式一样,如下

[Required]

[MaxWords(2,ErrorMessage = "很多单词了 {0}")]

public string Name { get; set; }

好,看下运行的结果





看到我们自定义的特性效果出来了,有成就感吧,但是细心的程序猿朋友应该注意到,自定义特性的ErrorMessage消息没有显示出来,因为代码中我们写死了,如何通过参数将ErrorMessage传进去呢,



运行代码后的效果为:




参考资料:ASP.NET MVC系列一:(6)自定义验证逻辑
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  aspnet mvc