2012-07-10 67 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屬性自動進行電子郵件驗證,而不是使用正則表達式。