2014-03-24 55 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; } 
相关问题