C# 自定义验证器:使用重载方法时未调用IsValid
如果我这样做:C# 自定义验证器:使用重载方法时未调用IsValid,c#,asp.net-mvc-2,validation,C#,Asp.net Mvc 2,Validation,如果我这样做: public class CustomRangeAttribute : RangeAttribute { public override bool IsValid(object value) { return base.IsValid(value); } } 方法按预期执行。 如果我这样做: 未调用该方法。为什么? sl3dg3如果您使用ASP.NET MVC3.0,它的工作原理与您预期的完全一样。我自己用你的例子试过了,效果很好——我得
public class CustomRangeAttribute : RangeAttribute
{
public override bool IsValid(object value)
{
return base.IsValid(value);
}
}
方法按预期执行。
如果我这样做:
未调用该方法。为什么?
sl3dg3如果您使用ASP.NET MVC3.0,它的工作原理与您预期的完全一样。我自己用你的例子试过了,效果很好——我得到了一个非空的ValidationContext,它确实被调用了。有关这方面的详细信息,请参阅。因此,这表明了升级到v.3.0的另一个原因(除了令人敬畏的Razor引擎)。。。如果我不是从
ValidationAttribute
继承,我是否有机会以某种方式检索ValidationContext
ValidationContext
仅在验证通过GetValidationResult
方法时可用。我怀疑MVC不会走这条路。出于好奇,您想从ValidationContext
中提取什么数据?我想获得一些关于属性所用属性的信息:if(ValidationContext.ObjectType.IsArray){…}
@sl3dg3,经过进一步研究,我意识到这是受支持的。请看我的最新答案。奇怪的是,我遇到了与MVC4上的OP相同的问题
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
return base.IsValid(value, validationContext);
}