1

我被引导到一篇非常好的文章,该文章展示了如何从头到尾创建自定义验证器。我唯一的问题是这只适用于单个字段: http ://haacked.com/archive/2009/11/19/aspnetmvc2-custom-validation.aspx

如果我需要针对模型中的 2 个或更多属性进行验证怎么办?如何将我的整个模型传递给验证器?

注意:要清楚,我真的不想在回发时验证整个模型......这会破坏这种方法的目的。

4

1 回答 1

5

您需要使用自定义验证属性并用它来装饰您的模型,而不是单个属性:

[AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
public class MyCustomValidatorAttribute : ValidationAttribute 
{
    public override bool IsValid(object value) 
    {
        // value here will be the model instance you could cast
        // and validate properties
        return true;
    }
}

然后用它装饰你的模型:

[MyCustomValidator]
public class MyViewModel
{
    public string Prop1 { get; set; }
    public string Prop2 { get; set; }
}

作为执行验证的数据注释的替代方法,我强烈建议您使用 FluentValidation.NET。它还与 ASP.NET MVC 有很好的集成

于 2011-01-13T18:36:41.700 回答