ASP.NET MVC 2 数值验证
我在一个类上有这个属性:
public virtual decimal? Number { get; set; }
当我在表单上使用它时,MVC 会自动验证它。如果用户输入字母,自然会返回错误:
“The value 'D' is not valid for Number”。
我如何更改此类错误消息甚至控制该行为?我没有找到相关的属性或类似的东西。
谢谢你!
I have this property on a class:
public virtual decimal? Number { get; set; }
When I'm using it on a form, MVC validates it automatically. If the user enters a letter, naturally an error is returned:
"The value 'D' is not valid for Number."
How do I change such error message or even control that behavior? I'm not finding the related attribute or something like that.
Thank you!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
它实际上不是来自模型验证的消息。当模型绑定器无法将输入值转换为绑定属性的值类型时,该消息将添加到模型状态。例如,当绑定属性是整数并且用户在该属性的输入字段中输入非数字字符时,可能会发生这种情况。
不幸的是,要覆盖该消息,您必须采用“硬”方式,即扩展 DefaultModelBinder 类并覆盖 SetProperty 方法。这是一个例子:
It is actually not a message that derives from model validation. The message is added to the model state when the model binder is unable to convert an input value to the value type of the bound property. This may for example occur when the bound property is an integer and the user entered a non-numeric character in the input field of that property.
To override the message you'll unfortunately have to do it the "hard" way, i.e. extend the DefaultModelBinder class and override the SetProperty method. Here is an example:
简单地使用给定范围验证器基础,您将得到您想要的
对于任何数字验证,您必须根据您的要求使用不同的不同范围验证:
对于整数
对于浮点数
对于双精度
simple use given range validator funda and you will get what you want
For any number validation you have to use different different range validation as per your requirements :
For Integer
for float
for double