如何更改默认“字段必须是数字”

我正在研究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”时,我得到默认消息“字段价格必须是数字”。

甚至价格输入字段上的validation属性也有“data-val-number”。

谢谢

默认消息作为字符串资源深深地融入框架。 在尝试将字符串值绑定到double类型时,它由默认模型绑定器添加。 因此,如果要更改此默认消息,可以编写自定义模型绑定器。 这是我为DateTime类型编写的一个示例,它具有相同的问题: https : //stackoverflow.com/a/7836093/29407

如果您只需改变不显眼的validation方面,您可以随时提供自己的jqueryvalidation属性:

 @Html.TextBoxFor(model => model.Price, new Dictionary() { { "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." }) 

我发现说起来更容易:

  [RegularExpression("([0-9]+)", ErrorMessageResourceType = typeof(ErrorMessage), ErrorMessageResourceName = "NumberInvalid")]