我知道这可能是不可能的,但让我们说我有两个属性的模型。

我写信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
        }      
    }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top