2012-08-06 17 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

相關問題