我的对象具有数据类型为int的字段。当我在这个文本框中输入html格式时,字母不是数字,验证者说 - 字段必须是数字。我该如何更改此消息
[Required(ErrorMessage = "Введите название")]
[DisplayName("Название")]
public int age { get; set; }
答案 0 :(得分:4)
我没有找到使用数据注释实现此目的的 clean 方法。一种方法是编写自定义模型绑定器,但这对于这样一个简单的任务来说似乎要做很多工作。
实现此目的的另一种方法是向ASP.NET应用程序添加App_GlobalResources
文件夹。添加名为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中这将改变)。如果您想完全控制验证逻辑,我建议您使用验证库,例如Fluent Validation或xVal。
答案 1 :(得分:2)
我遇到了同样的问题并通过指定只允许正自然数的RegularExpression来解决它。
[Required(ErrorMessage = "Введите название")]
[DisplayName("Название")]
[RegularExpression(@"^[0-9]+$", ErrorMessage = "Поле возраст не является числом")]
public int age { get; set; }
不确定此解决方案是否有任何缺陷。它似乎对我很好。
PS:如果您不想允许前导零使用"^[1-9]+[0-9]*$"
。
回想起来:我不得不承认,将正则表达式添加到整数是有点奇怪。