我工作的一个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”,我得到默认的消息“这个领域的价格必须是数字”。
即使是在价格输入字段验证属性有什么“数据-VAL-数”。
谢谢
默认的消息深深烤成的框架,作为一个字符串资源。 它试图通过字符串值,以double类型绑定时,默认的模型添加粘合剂。 所以,如果你想改变这个默认的消息,你可以写一个自定义模型粘合剂。 下面是我写的具有相同问题的DateTime类型的例子: https://stackoverflow.com/a/7836093/29407
如果你真行不断变化的只是事物的不显眼的验证方面,你总是可以提供自己的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." })
我发现它更容易只是说:
[RegularExpression("([0-9]+)", ErrorMessageResourceType = typeof(ErrorMessage), ErrorMessageResourceName = "NumberInvalid")]