自定义验证器:使用重载方法时不会调用 IsValid

发布于 2024-10-21 00:51:18 字数 424 浏览 0 评论 0原文

如果我执行以下操作:

public class CustomRangeAttribute : RangeAttribute
{
    public override bool IsValid(object value)
    {
        return base.IsValid(value);
    }
}

该方法将按预期执行。 如果我这样做:

protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
   return base.IsValid(value, validationContext);
}

该方法不会被调用。为什么? SL3DG3

If I do the following:

public class CustomRangeAttribute : RangeAttribute
{
    public override bool IsValid(object value)
    {
        return base.IsValid(value);
    }
}

The method is executed as expected.
If I do:

protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
   return base.IsValid(value, validationContext);
}

The method is not called. Why?
sl3dg3

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

风筝在阴天搁浅。 2024-10-28 00:51:18

如果您使用 ASP.NET MVC 3.0,这将完全按照您的预期工作。我自己用你的例子尝试过,效果很好——我得到一个非空的 ValidationContext 并且它确实被调用了。请参阅此处 对此进行了全面阐述。因此,这表明了升级到 v.3.0 的另一个原因(除了出色的 Razor 引擎之外)。

This works exactly as you'd expect if you are using ASP.NET MVC 3.0. I tried it myself using your example and it works great -- I get a non-null ValidationContext and it does get invoked. See here for a full elaboration on this. So this suggests yet another reason (beyond the awesome Razor engine) to upgrade to v.3.0.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文