如果用户将非数字字符串放在int字段中,则自定义验证错误消息

Jer*_*acs 8 asp.net-mvc data-annotations asp.net-mvc-3

这问题之前已经被问过了,但是我认为搜索条件对于我来说太通用了,无法找到我正在寻找的答案,所以我会再问一遍.

我有一个带有int属性的模型和范围注释.

如果用户输入的不是int,则验证消息会响应The value '<bad data>' is not valid for '<property name>'...这很好,但我想提供更多反馈,即Expecting an integer value in this field..

由于此验证在其他验证器查看之前失败,因此我不知道如何(或者是否可能)覆盖默认的验证器消息.

我有什么选择?

每个请求,我发布的代码,但它没有很多:

[Range(0,65535, ErrorMessage="Port must be between 0 and 65535.")] 
public int Port { get; set; }
Run Code Online (Sandbox Code Playgroud)

在到达RangeAttribute之前进行验证.我想用我自己选择的替换默认消息.

Cym*_*men 5

如果您正在使用标准注释,则应该能够使用以下内容覆盖错误消息:

[MyAnnotation(...., ErrorMessage = "My error message")]
public int myInt { get; set; }
Run Code Online (Sandbox Code Playgroud)

或者你真的想要附加到默认错误消息而不是替换它(不清楚有问题)?

更新:误读 - 建议这样作为答案:如何更改ASP.NET MVC中的int模型验证的ErrorMessage?或者更好的是如何在由@Html帮助程序生成的MVC中更改"data-val-number"消息验证