我有下面的代碼工作MVC 4 - DataAnnotations - 驗證對類型
[Required(ErrorMessage = "Price is required.")]
[Range(typeof(Decimal), "1", "9999", ErrorMessage = "Price xx.xx")]
public decimal? productPrice { get; set; }
當頁面與 價格提交=空字段錯誤消息是「價格是必需的。」。 Price =超過9999的錯誤信息是「Price xx.xx」。
但是,當我鍵入'aaaa'時,錯誤消息是 「字段productPrice必須是一個數字。」
如果輸入的內容不正確,我該如何更改信息? 像:「價格必須爲1-9999之間的小數/數字
---- UPDATE:---- 下面的代碼
NULL,不是小數工作,範圍之間,但與」 .1" 工作
[Required(ErrorMessage = "Price is required.")]
[RegularExpression(@"[0-9]*\.?[0-9]+", ErrorMessage = "Price must be a Numbers only.")]
[Range(typeof(Decimal), "1", "9999", ErrorMessage = "Price must be a decimal/number between {1} and {2}.")]
public decimal? productPrice { get; set; }
這個正則表達式在各種情況下會失敗,例如「.1」我不推薦使用正則表達式來緊縮數字。正則表達式用於匹配字符串(文本)輸入。 RangeAttribute是解決此問題的最合適的方法。 –
@JOBG正如馬丁所說,「.1」沒有被(3)DataAnnotations中的任何一個捕獲。有什麼想法嗎? –
只需將@MartinDevillers Range方法從1-999更改爲0-999,並且應該讓「.1」通過,正如我之前所說的那樣,Range是一個更好的解決方案。我還添加了一個正則表達式,以防你想檢查。 – JOBG