更改数据注释中的验证消息

kus*_*agi 7 validation asp.net-mvc entity data-annotations

我的对象具有数据类型为int的字段.当我在这个文本框中输入html格式时,字母不是数字,验证者说 - 字段必须是数字.我该如何改变这样的消息呢

 [Required(ErrorMessage = "??????? ????????")]
    [DisplayName("????????")]
    public int age { get; set; }
Run Code Online (Sandbox Code Playgroud)

Dar*_*rov 4

我还没有找到使用数据注释来实现此目的的干净方法。一种方法是编写自定义模型绑定程序,但这对于如此简单的任务来说似乎需要做很多工作。

实现此目的的另一种方法是将App_GlobalResources文件夹添加到 ASP.NET 应用程序。添加一个名为Messages.resx包含PropertyValueRequired字符串资源的资源文件。

PropertyValueRequired = "Some custom error message"
Run Code Online (Sandbox Code Playgroud)

在您的Application_Start注册资源类密钥中:

protected void Application_Start()
{
    RegisterRoutes(RouteTable.Routes);
    DefaultModelBinder.ResourceClassKey = "Messages";
}
Run Code Online (Sandbox Code Playgroud)

请注意,ASP.NET MVC 2 使用PropertyValueInvalid 代替PropertyValueRequired资源键。

IMO 使用数据注释执行验证逻辑是有限的(也许在 .NET 4 中这会改变)。如果您想完全控制验证逻辑,我建议您使用验证库,例如Fluent ValidationxVal