我有這個貨幣領域的ASP.NET MVC-4的應用程序:如何驗證貨幣字段?
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:c}", ConvertEmptyStringToNull = true)]
[DataType(DataType.Currency)]
public decimal? Price { get; set; }
這在我看來是相應的部分:
@Html.EditorFor(model => model.Price)
@Html.ValidationMessageFor(model => model.Price)
如果價格是100歐元的文本字段該視圖顯示了:
100,00€
這很好。
但是當我嘗試做回發時,我遇到了問題。驗證器彈出並說價格字段需要是一個數字。
我只能解決這個問題,如果(1)我刪除€符號和(2)替換小數點分隔符(用逗號替換逗號)。
如果沒有更好的解決方案,我想我可以更改DataFormatString =「{0:F2}」以避免貨幣符號。
但我該如何讓驗證器接受逗號而不是(美式)點的小數點分隔符?
感謝您的幫助,夥計們!
我想你需要做一個自定義模型聯編程序檢查此鏈接http://haacked.com/archive/2011/03/19/fixing-binding-to-decimals。aspx – Overmachine
@Overmachine:謝謝你的評論。但我認爲ModelBinder不會解決驗證器問題。換句話說:我仍然希望客戶端驗證 - 驗證器仍然會失敗(有或沒有ModelBinder),我錯了嗎? – Ingmar
客戶端驗證仍然可以正常工作,問題在於您在回發郵件時發送貨幣符號。 – Overmachine