如何更改默认值"字段必须是数字"



我正在开发一个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")]

最新更新