我正在研究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”)的数字值时,我会收到默认消息“字段价格必须是数字”。
即使价格输入字段上的验证属性也有“data-val-number”。
由于
答案 0 :(得分:15)
如果您只需更改不显眼的验证方面,您可以随时提供自己的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." })
答案 1 :(得分:4)
默认消息作为字符串资源深深地融入框架。在尝试将字符串值绑定到double类型时,它由默认模型绑定器添加。因此,如果要更改此默认消息,可以编写自定义模型绑定器。这是我为DateTime类型编写的一个示例,该示例具有相同的问题:https://stackoverflow.com/a/7836093/29407
答案 2 :(得分:4)
我发现说起来更容易:
[RegularExpression("([0-9]+)", ErrorMessageResourceType = typeof(ErrorMessage), ErrorMessageResourceName = "NumberInvalid")]