我在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; }
有关如何使这项工作用于客户端验证的任何建议吗?
谢谢!
答案 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/。