2012-08-06 16 views
6

我正在处理MVC 3应用程序。一个在模型中的字段的类型是双的,并定义如下:如何更改默认的“该字段必须是一个数字”

[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”的含义。

谢谢

回答

4

将默认消息作为字符串资源深入烘焙到框架中。在尝试将字符串值绑定到双精度类型时,它由默认模型联编程序添加。所以如果你想改变这个默认消息,你可以写一个自定义模型绑定器。下面是我写的具有相同问题的DateTime类型的例子:https://stackoverflow.com/a/7836093/29407

+0

谢谢Darin。对于每种数据类型都有一个模型绑定器?顺便说一句,你有博客吗? – Bill 2012-08-06 18:52:37

+3

我实现了一个自定义模型联编程序,但仍然在客户端,显示相同的句子,默认的一个。如何在客户端注入另一条消息?谢谢 – Bill 2012-08-07 10:13:26

3

我发现它更容易只是说:

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

这是一个更简单的方法。 – Sprintstar 2015-02-26 13:02:57

14

如果你确定有只改变事物的不显眼的验证方面,你总是可以提供自己的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." }) 
+0

真棒解决方案@ScottE,从字面上我被搜查整个互联网,但没有找到任何相关解决方案。这很好。谢谢...!!!!! – 2016-03-11 03:52:31

相关问题