Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自定义验证器:使用重载方法时未调用IsValid_C#_Asp.net Mvc 2_Validation - Fatal编程技术网

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);
}