我被引导到一篇非常好的文章,该文章展示了如何从头到尾创建自定义验证器。我唯一的问题是这只适用于单个字段: http ://haacked.com/archive/2009/11/19/aspnetmvc2-custom-validation.aspx
如果我需要针对模型中的 2 个或更多属性进行验证怎么办?如何将我的整个模型传递给验证器?
注意:要清楚,我真的不想在回发时验证整个模型......这会破坏这种方法的目的。
我被引导到一篇非常好的文章,该文章展示了如何从头到尾创建自定义验证器。我唯一的问题是这只适用于单个字段: http ://haacked.com/archive/2009/11/19/aspnetmvc2-custom-validation.aspx
如果我需要针对模型中的 2 个或更多属性进行验证怎么办?如何将我的整个模型传递给验证器?
注意:要清楚,我真的不想在回发时验证整个模型......这会破坏这种方法的目的。
您需要使用自定义验证属性并用它来装饰您的模型,而不是单个属性:
[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 有很好的集成。