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

问题描述 投票:1回答:1

我在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; }

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

谢谢!

asp.net asp.net-mvc-2
1个回答
3
投票

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

您可以创建自己的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/

© www.soinside.com 2019 - 2024. All rights reserved.