2012-04-30 32 views
1

我具有以下視圖模型域:MVC DataAnnotations除去錯誤消息

[Required] 
[StringLength(9)] 
[RegularExpression(@"\d{9}", ErrorMessageResourceName = "Number_Format", ErrorMessageResourceType = typeof(MyTypeOfResource))] 
public string Number{ get; set; } 

正則表達式過濾器會照顧輸入的大於9個字符和向右格式並顯示其驗證消息,但StringLength將顯示它自己的默認錯誤信息也是如此。刪除[StringLength(9)]將解決兩個不同消息的問題,但我認爲該過濾器爲SQL提供了有關數據類型最大大小的有價值的信息。有沒有其他方法?謝謝,

回答

1

更改StringLength屬性包括空白錯誤消息,就像這樣:

[StringLength(9, ErrorMessage = "")] 
2

如果刪除StringLength和只有:

[Required] 
[RegularExpression(@"\d{9}", ErrorMessageResourceName = "Number_Format", ErrorMessageResourceType = typeof(MyTypeOfResource))] 
public string Number{ get; set; } 

你應該不錯。 RequiredAttribute將驗證屬性是否已設置,並且RegularExpressionAttribute將驗證它是由9個字符組成的全部數字的字符串。

編輯:

關於有關假設過濾器的評論提供了有價值的信息,SQL ......不,這並不意味着要做到這一點。 DataAnnotations旨在彌補客戶端和表示層驗證之間的差異。 MVC在內部使用DataAnnotations來驗證ViewModel,但ViewModel不一定(不應該)被視爲域模型。 ViewModel是您想要向用戶展示的模型,而領域模型通常是數據的代表。

我前段時間寫過一篇博客,介紹了MVC 3中的DataAnnotations以及框架如何將它們變成客戶端的不顯眼的JavaScript驗證。這絕對值得一試。

Code is hereblog is here