2012-07-10 69 views
0

我正在开发一个MVC应用程序,该应用程序有一个注册表单,我希望使用Compare,Required和Regex属性进行电子邮件验证。用户必须输入他们的电子邮件地址,然后确认电子邮件地址,我想使用Compare属性来确保他们输入相同的东西。这是我的模型;MVC 3比较属性不工作

[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中有一个错误,但无论我做什么都不能解决问题。

我在这里拉我的头发,任何帮助将不胜感激!

回答

0

无论如何,如果您正在进行验证验证,您可能会考虑从NuGet中抓取MVC Foolproof Validation。它有自己的“EqualTo”属性,你可能会有更多的运气。

(在一个侧面说明,你可能并不需要正则表达式检查确认地址。)

0

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

另一个想法是下载MvcContrib软件包,并使用Email属性自动进行电子邮件验证,而不是使用正则表达式。