2014-06-10 103 views
0

我已經使用ASP.NET MVC 5和驗證我正在使用常規的Jquery unobtrusive驗證庫。 目前我正面臨一個問題,正則表達式驗證在客戶端工作正常,但在服務器端它不驗證值。Asp.net MVC 5模型驗證正則表達式不驗證特殊字符

[RegularExpression(@"^[0-9]{19}$", ErrorMessage = "Invalid Value")] 
public string Value{ get; set; } 

這是驗證19位數的簡單正則表達式。它在客戶端的工作正常,現在允許'-或任何事情傳遞,但如果我直接提交給服務器比模型沒有驗證。 我需要做一些特別的事情嗎?

+2

你在打電話給Model.IsValid嗎?模型綁定時會發生什麼?有什麼異常?向我們展示別的東西來幫助。 – Fals

+0

一些如何ModelState.IsValid沒有返回錯誤。 –

回答

0

當您通過post/get/put/delete請求發送數據時,如果手動創建帶有驗證類的類,那麼ModelBinding(將post/get值映射到複雜模型的過程)會發生在那些數據/驗證註釋將不適用。

可以手動驗證模型 - Validate list of models programmatically in ASP.NET MVC

這就是說,有一個叫做PostSharp庫,甚至可以強制執行這些規則,當你創建MVC(CodeContracts)以外的自定義對象/模型,如果它不驗證它會引發異常。請記住,這個圖書館已經付費,但它有免費版本可用,可能適合您的需求。