我正在开发一个MVC 3应用程序。模型中的一个字段是double类型,定义如下:
[Required(ErrorMessageResourceName = "ListingItemPriceRequired", ErrorMessageResourceType = typeof(ErrorMessages))]
[Display(Name = "DisplayListingItemPrice", ResourceType = typeof(Display))]
[Range(1, 500000000, ErrorMessageResourceName = "ListingItemPriceNotWithinRange", ErrorMessageResourceType = typeof(ErrorMessages))]
public double Price { get; set; }
尽管如此,当我输入一个带有一些尾随空格(如"342")的数字值时,我会得到默认消息"字段价格必须是一个数字"。
甚至"价格"输入字段上的验证属性也有"数据值编号"的含义。
感谢
如果你只想改变不引人注目的验证方面,你总是可以提供你自己的jquery验证属性:
@Html.TextBoxFor(model => model.Price, new Dictionary<string, object>() { { "data-val-number", "Price must be a valid number." } })
或者,由于MVC将属性名称中的下划线替换为短划线,因此以下操作更简单:
@Html.TextBoxFor(model => model.Price, new { data_val_number = "Price must be a valid number." })
默认消息作为字符串资源深入到框架中。当试图将字符串值绑定到双重类型时,默认模型绑定器会添加它。所以,如果你想更改这个默认消息,你可以写一个自定义的模型活页夹。以下是我为具有相同问题的DateTime类型编写的示例:https://stackoverflow.com/a/7836093/29407
我发现说更容易
[RegularExpression("([0-9]+)", ErrorMessageResourceType = typeof(ErrorMessage), ErrorMessageResourceName = "NumberInvalid")]