首页 > 代码库 > MVC验证07-自定义Model级别验证
MVC验证07-自定义Model级别验证
原文:MVC验证07-自定义Model级别验证<style type="text/css">.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }</style>
在一般的自定义验证特性中,我们通过继承ValidationAttribute,实现IClientValidatable,只能完成对某个属性的自定义验证。
使用IValidatableObject可以完成Model级别的验证。
□ 实现IValidatableObject接口的Model
public class RegisterModel : IValidatableObject
{
public int RegisterCount{get;set;}
public int Qutoa{get;set;}
//实现IValidatableObject接口方法,实现自定义验证
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var results = new List<ValidationResult>();
if (RegisterCount > Quota)
{
results.Add(new ValidationResult("报名人数已经超过名额限制", new string[] { "RegisterCount" }));
}
if (RegisterCount>3)
{
results.Add(new ValidationResult("单次最多报名三位学员", new string[] { "RegisterCount" }));
}
return results;
}
}
可见,在Model级别就自定义了验证规则。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。