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

时间:2010-10-11 15:03:44

标签: asp.net asp.net-mvc-2

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

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

我想做这样的事情:

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

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

谢谢!

1 个答案:

答案 0 :(得分: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/