MVC5中的自定义验证错误消息

时间:2014-03-24 13:18:32

标签: asp.net-mvc validation asp.net-mvc-5

我是MVC5和asp.net的新手,我找不到答案,所以如果有人能告诉我如何在验证失败后自定义消息,我将不胜感激。我们假设我有一个这样的代码:

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

    public string Pesel { get; set; }

使用除数字之外的任何其他符号后,我收到如下消息: 字段Pesel必须匹配正则表达式'^ [0-9] + $'

如何更改此讯息?

3 个答案:

答案 0 :(得分: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。最后一个示例将呈现错误消息" My Property的最小长度为11":

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

答案 1 :(得分:1)

RegularExpression属性有一个ErrorMessage参数。

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

答案 2 :(得分:0)

提供适当的错误消息是很好的做法,因为有时我们在同一属性上设置了多个验证...为了识别相同属性的不同验证,我们可以分配错误消息属性"(ErrorMessage =' message将是这里')"
。e.g,:

[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; }