扩展MVC RequiredAttribute

我有一个ExtendedAttribute的扩展类,它不会发回错误消息。 如果我在调试器中检查它,文本就没问题了。

public class VierRequired : RequiredAttribute { public VierRequired(string controlName) { //... } public string VierErrorMessage { get { return ErrorMessage; } set { ErrorMessage = value; } } // validate true if there is any data at all in the object public override bool IsValid(object value) { if (value != null && !string.IsNullOrEmpty(value.ToString())) return true; return false; // base.IsValid(value); } } 

我这样称呼它

 [VierRequired("FirstName", VierErrorMessage = "Please enter your first name")] public string FirstName { get; set; } 

和mvc-view

  model.FirstName, new { @class = "formField textBox" })%>  model.FirstName)%> 

如果我使用正常的必需注释,它可以工作

 [Required(ErrorMessage = "Please enter your name")] public string FirstName { get; set; } 

但是自定义不会发回任何错误消息

当我创建自己的RequiredAttribute派生时,我也遇到了客户端validation的问题。 要修复它,您需要注册您的数据注释,如下所示:

 DataAnnotationsModelValidatorProvider.RegisterAdapter( typeof(VierRequired), typeof(RequiredAttributeAdapter)); 

只需在Application_Start()方法中调用它,客户端validation应该正常工作。

如果您在发布表单时属性不起作用,那么这将告诉我您的属性中的逻辑有问题(请检查IsValid方法)。 我也不确定你想要用你的派生数据注释实现什么; 你的逻辑看起来像是试图完成默认属性所做的事情:

摘自MSDN文档:

如果属性为null,包含空字符串(“”)或仅包含空格字符,则会引发validationexception。