我在我的模型以下字段:ASP.Net MVC十進制自定義編輯模板 - 數據不保存
public Decimal AnnualSalary { get; set; }
顯示在我的觀點:
@Html.EditorFor(model => model.SelectedPerson.AnnualSalary)
這使我的數據格式有2位小數。我還想要一個逗號分隔符。所以我在Shared |中創建了一個名爲Decimal.cshtml的文件包含以下編輯模板文件夾:
@model Decimal
@Html.TextBox("", Model.ToString("#,##0.00"))
這給了我,我想在編輯器中現有的數據顯示。但是,當我去保存修改後的數據失敗。如果我刪除了十進制編輯器模板,那麼數據可以很好保存。
我還注意到,沒有新的編輯器模板,如果我在此文本框中輸入逗號,我不會收到客戶端驗證錯誤,但是我的數據仍未保存。
這就好像客戶端驗證非常樂意接受千位分隔符,但是當EF代碼第一次嘗試保存數據時服務器端的東西不像千位分隔符。
這似乎是一個相當普遍的要求,但我努力在任何地方找到明確的答案。
爲什麼要更改字符串中的AnnualSalary並在動作中解析它,因爲Decimal ...驗證仍然有效,並且不需要將字符串解析爲十進制....? – 2012-03-19 12:13:17
它將允許您以任何您接受的形式(正則表達式)將其發送到服務器,並且也將擺脫現有問題。 – 2012-03-19 12:33:35
感謝您在編輯中提供鏈接。這導致我找到了Phil Haack的一個通用解決方案,詳見下面的答案。我無法真正地將您的答案標記爲正確,但我已將其提升。 – daveywc 2012-03-19 21:38:31