在数据注释改变验证消息
-
19-09-2019 - |
题
我的对象具有数据类型为int字段。当我把HTML表单在这个文本信没有编号声言如下─字段必须是数字的验证。如何更改这样这个消息
[Required(ErrorMessage = "Введите название")]
[DisplayName("Название")]
public int age { get; set; }
解决方案
我还没有找到一个清洁的方式来实现这一点使用数据注释。一种方法是编写自定义的模型绑定,但是这似乎是一个大量的工作,对于这样一个简单的任务做。
要实现这一点的另一种方法是将App_GlobalResources
文件夹添加到您的ASP.NET应用程序。添加称为Messages.resx
含有PropertyValueRequired
字符串资源的资源文件。
PropertyValueRequired = "Some custom error message"
在您的Application_Start
注册资源类键:
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
DefaultModelBinder.ResourceClassKey = "Messages";
}
请注意ASP.NET MVC 2使用PropertyValueInvalid
代替PropertyValueRequired
资源键。
IMO使用数据注释来执行验证逻辑是有限的(也许在.NET 4,这将改变)。如果你想有过验证逻辑,我会建议你使用验证库,如流利的验证或 XVAL 。
其他提示
我遇到了同样的问题,并通过指定正则表达式,其仅允许正的自然数围绕它的工作。
[Required(ErrorMessage = "Введите название")]
[DisplayName("Название")]
[RegularExpression(@"^[0-9]+$", ErrorMessage = "Поле возраст не является числом")]
public int age { get; set; }
不知道是否有任何挫折到该溶液中。这似乎为我工作的罚款。
PS:如果你不希望允许前导零使用"^[1-9]+[0-9]*$"
在回想:我必须承认,虽然这是一个有点怪异正则表达式添加到一个整数
。不隶属于 StackOverflow