对整个模型定制ValidationAttribute试验
-
27-09-2019 - |
题
我知道这可能是不可能的,但让我们说我有两个属性的模型。
我写信ValidationAttribute的属性之一。该VA看看其他财产,并可以作出决定?
因此;
public class QuickQuote
{
public String state { get; set; }
[MyRequiredValidator(ErrorMessage = "Error msg")]
public String familyType { get; set; }
所以在上面的例子中,可以验证测试,看看有什么在“状态”属性,并考虑到这一点验证了“familyType”什么时候?
我知道我大概可以保存对象的会话,但想避免状态,如果可能的任何节能。
解决方案
要实现这种验证的另一种方式是让你的模型实现IDataErrorInfo的。这样,你可以做全视图模型的验证。
此页具有大约iplementing的IDataErrorInfo的一些信息接口,关于标题下的方式向下“mplementing的IDataErrorInfo的接口”的2/3
其他提示
您自定义的验证可以直接应用于类,看看在默认情况下创建为VS2008的MVC项目模板的一部分AccountModels类PropertiesMustMatch属性。
使用ValidationContext让你的模型:
public class MyRequiredValidator: RequiredAttribute
{
public override bool RequiresValidationContext
{
get {return true;} //it needs another propertie in model
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
QuickQuote model = (QuickQuote)validationContext.ObjectInstance;
if (model.state == "single")
return null;
else
return base.IsValid(value, validationContext);//familyType is require for married
}
}
不隶属于 StackOverflow