摘要:DataAnnotation自动处理“int”?让我重新考虑使用它们。
也许我遗漏了一些东西和一个简单的修复方法,但是我不能让数据注释配合。我有一个公共属性,具有自己的自定义验证属性:
[MustBeNumeric(ErrorMessage = "Must be a number")] public int? Weight { get; set; }
自定义验证属性的要点是快速检查输入是否为数字并显示适当的错误消息。问题是,当dataAnnotations尝试将字符串绑定到int时?自动不验证并显示“值'asdf'对权重无效。”
在我的生活中,我不能让数据注释停止处理它,这样我就可以在自定义属性中处理它。
这似乎是一个流行的场景(验证输入的数字),我猜有一个简单的解决方案,但我在任何地方都找不到。
这里有一个解决方法(我不会称之为解决方案)。添加一个 Messages.resx 文件内部 App_GlobalResources Web应用程序的文件夹。在内部添加以下资源:
Messages.resx
App_GlobalResources
Key: PropertyValueInvalid Value: {0} Must be a number
在 Application_Start 方法 Global.asax 添加以下内容:
Application_Start
Global.asax
DefaultModelBinder.ResourceClassKey = "Messages";