如何覆盖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子类,并携带客户端验证信息。有多种资源可用于编写自定义客户端验证代码。例如,请参阅:
- https://blogs.msdn.microsoft.com/stuartleeks/2010/07/27/asp-net-mvc-adding-client-side-validation-to-validatepasswordlengthattribute/
- https://devermind.wordpress.com/2009/06/21/asp-net-mvc-tip-3-how-to-cover-all-your-client-side-form-validation-needs-without-writing-any-javascript-part1/
在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
EntityFramework Code-First 简易教程-------领域类配置之DataAnnotations