我正在开发一个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中有一个错误,但无论我做什么都无法解决问题。
我把头发拉到这里,任何帮助都会受到赞赏!
答案 0 :(得分:0)
如果您正在进行花哨的验证,您可以考虑从NuGet中获取MVC Foolproof Validation。它有自己的“EqualTo”属性,你可能会更幸运。
(旁注,您可能不需要正则表达式检查确认地址。)
答案 1 :(得分:0)
可能是其他属性正在干扰......你真正需要的只是比较和显示属性。必需,正则表达式,数据类型都是多余的,因为您已经在主数据库上有这些字段,如果它与主数据库不匹配,则比较将失败。
另一个想法是下载MvcContrib包,并使用自动执行电子邮件验证的Email属性,而不是使用Regex。