10

我正在开发一个 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”)的数字值时,我会收到默认消息“字段价格必须是一个数字”。

甚至 Price 输入字段上的验证属性也有“data-val-number”之类的东西。

谢谢

4

3 回答 3

17

如果您可以只更改不显眼的验证方面,您可以随时提供自己的 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." })
于 2013-12-16T16:49:06.640 回答
6

我发现说起来更容易:

 [RegularExpression("([0-9]+)", ErrorMessageResourceType = typeof(ErrorMessage), ErrorMessageResourceName = "NumberInvalid")]
于 2013-11-05T15:40:38.440 回答
5

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

于 2012-08-06T16:12:25.077 回答