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

时间:2012-08-06 15:53:41

标签: jquery asp.net-mvc-3

我正在研究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”。

由于

3 个答案:

答案 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")]