MVC 3比较属性不起作用

时间:2012-07-10 15:52:20

标签: jquery asp.net-mvc validation

我正在开发一个MVC应用程序,它有一个注册表单,我想使用Compare,Required和Regex属性进行电子邮件验证。用户必须输入他们的电子邮件地址,然后确认电子邮件地址,我想使用Compare属性来确保他们输入相同的内容。这是我的模特;

[RegularExpression(@"<REGEX IS HERE>", ErrorMessage = "Please enter a valid e-mail address")]
[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email")]
public string EmailAddress { get; set; }

[Compare("EmailAddress", ErrorMessage = "The email and confirmation email do not match.")]
[RegularExpression(@"<REGEX IS HERE>", ErrorMessage = "Please enter a valid e-mail address")]        
[Required]        
[DataType(DataType.EmailAddress)]        
[Display(Name = "Confirm Email")]        
public string ConfirmEmailAddress { get; set; }

所有其他验证,即必需/正则表达式工作正常,但它不适用于客户端的比较,它正在工作表格发布它回来和错误。

我读过很多文章说jquery.validate.unobtrusive和jquery1.5.1中有一个错误,但无论我做什么都无法解决问题。

我把头发拉到这里,任何帮助都会受到赞赏!

2 个答案:

答案 0 :(得分:0)

如果您正在进行花哨的验证,您可以考虑从NuGet中获取MVC Foolproof Validation。它有自己的“EqualTo”属性,你可能会更幸运。

(旁注,您可能不需要正则表达式检查确认地址。)

答案 1 :(得分:0)

可能是其他属性正在干扰......你真正需要的只是比较和显示属性。必需,正则表达式,数据类型都是多余的,因为您已经在主数据库上有这些字段,如果它与主数据库不匹配,则比较将失败。

另一个想法是下载MvcContrib包,并使用自动执行电子邮件验证的Email属性,而不是使用Regex。