如何覆盖DataAnnotations必需标记以允许条件客户端验证

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何覆盖DataAnnotations必需标记以允许条件客户端验证相关的知识,希望对你有一定的参考价值。

我在ASP.NET MVC2中使用DataAnnotations标记进行客户端验证。我正在使用Required标签,但在我的情况下,根据需要标记字段并不总是绝对的。我还有其他条件来确定是否需要字段。

是否可以覆盖所需的标记以允许此条件逻辑?

我想做这样的事情:

public class ConditionalRequiredAttribute : RequiredAttribute
{
    public ConditionalRequiredAttribute(string someParameter)
    {
        //Logic to determine if this field is required.
    }
}

然后像这样使用这个属性:

[ConditionalRequired("some parameter info")]
public virtual string EMailAddress { get; set; }

有关如何使这项工作用于客户端验证的任何建议?

谢谢!

答案

我建议不要使用[必需],因为[必需]和子类型具有始终需要的特殊含义 - 无条件要求。

您可以创建自己的ValidationAttribute子类,并携带客户端验证信息。有多种资源可用于编写自定义客户端验证代码。例如,请参阅:

在MVC 3中,您可以使用IClientValidatable,这样可以简化生活。有关示例,请参阅https://blogs.msdn.microsoft.com/stuartleeks/2010/07/28/asp-net-mvc-adding-client-side-validation-to-validatepasswordlengthattribute-in-asp-net-mvc-3-preview-1/

以上是关于如何覆盖DataAnnotations必需标记以允许条件客户端验证的主要内容,如果未能解决你的问题,请参考以下文章

EF Code-First 学习之旅 DataAnnotations

自定义 TreeView 以允许多选

EntityFramework Code-First 简易教程-------领域类配置之DataAnnotations

必需的验证错误消息未以 jquery 弹出模式形式显示

如何在 Javascript 中设置 HTML5 必需属性?

HTML 任何html文档的head标记中的必需标记