2014-03-24 77 views
5

我對MVC5和asp.net很陌生,我找不到答案,所以如果有人能告訴我如何在驗證失敗後自定義消息,我將不勝感激。假設我有一個這樣的代碼:MVC5中的自定義驗證錯誤消息

[Required] 
    [MaxLength(11),MinLength(11)] 
    [RegularExpression("^[0-9]+$")] 

    public string Pesel { get; set; } 

使用任何其他的跡象比數字後,我得到了這樣的消息: 領域PESEL必須與正則表達式「^ [0-9] + $」

匹配

如何更改此消息?

回答

20

System.ComponentModel.DataAnnotations所有屬性驗證,有一個ErrorMessage屬性,您可以設置:

[Required(ErrorMessage = "Foo")] 
[MinLength(11, ErrorMessage = "Foo"), MaxLength(11, ErrorMessage = "Foo")] 
[RegularExpression("^[0-9]+$", ErrorMessage = "Foo")] 

此外,您還可以使用字段名稱/顯示名稱錯誤消息中的屬性。這是通過字符串格式設置完成的。以下示例將呈現「您忘記了MyPropertyName」的錯誤消息。

[Required(ErrorMessage = "You forgot {0}")] 
public string MyPropertyName { get; set; } 

這也尊重DisplayAttribute。由於MyPropertyName不是一個非常用戶友好的名稱,因此下面的示例將顯示「您忘記了我的財產」的錯誤消息。

[Display(Name = "My Property")] 
[Required(ErrorMessage = "You forgot {0}")] 
public string MyPropertyName { get; set; } 

最後,您可以使用其他格式的字符串值,以使那些在更復雜的驗證屬性,如您使用的是MinLengthAttribute使用的值和選項。最後一個例子將呈現「爲我的房屋的最小長度是11」的錯誤消息:

[Display(Name = "My Property")] 
[MinLength(11, ErrorMessage = "The minimum length for {0} is {1}")] 
public string MyPropertyName { get; set; } 
+0

非常感謝你,這就是我一直在尋找:) –

+1

什麼國際化? – Romias

1

RegularExpression屬性具有ErrorMessage說法。

[RegularExpression("^[0-9]+$","Error Message")] 
+2

語法不正確。應該是[RegularExpression(「^ [0-9] + $」,ErrorMessage =「錯誤信息」)] –

0

給予相應的錯誤信息是很好的做法,因爲有些時候,我們設置相同屬性的多個驗證...,以確定相同的屬性,我們可以將錯誤信息屬性「(的ErrorMessage =‘的消息將在這裏’不同的驗證)」
如,:

[Required(ErrorMessage = "Username Must not be blank")] 
[MinLength(8, ErrorMessage = "Too short Username"), MaxLength(20, ErrorMessage = "UserName must be less than 20")] 
[RegularExpression("^[0-9][a-z][A-Z]+$", ErrorMessage = "Username must be combination of number,letter(Capital and Small)")] 
public string UserName { get; set; } 
相關問題