2011-12-08 43 views
2

我目前正在創建形式爲合同,其中一個字段是回扣%,並已申報實體框架小數。 我在輸入值並保存時遇到問題。MVC 2 - 十進制值不保存

代碼的快速概覽:

EF:tblContract - >回扣是一個小數字段。

創建/編輯觀點:

<%: Html.TextBoxFor(model => model.Rebate, new { @class="form-txt-normal" }) %> 

我試着輸入號碼以不同的方式。

75:當我給它東西,可以被解析到一個int,它保存在該領域的正確值(奇怪的是,事後顯示時,沒有小數點顯示,僅有75)。

75.25:我觀看傳遞到[HttpPost]編輯方法(同樣爲創建)的值。當輸入十進制值時,該變量爲空。我outputscreen顯示我的異常已發生:

A first chance exception of type 'System.Linq.Dynamic.ParseException' occurred in ContractManagementTool.DLL 

我也試過75,25排除關於小數點/逗號應該是什麼樣的文化設置,但是會出現同樣的問題。 我有幾個其他字段包含整數,它們的處理方式完全一樣,唯一的區別是實體框架將它們識別爲Int32,而不是Decimal。 Int32全部工作,Decimal不工作。

我在這裏錯過了什麼嗎? MVC不能與小數一起使用,因爲它可以與int整合使用?

進一步更新:

我得到了它的一部分工作。我沒有改變代碼(除了一些jQuery,我會解釋)。

當我進入75,25回扣變量被正確地傳遞給方法(這是有道理的,因爲我在比利時我和我們使用,爲十進制休息:))我加了一些jQuery來代替。當用戶輸入數據時,使其更容易。

當我發佈變量,小數回扣的值爲75.25(現EF接管其小數點)。回扣已經在傳遞給方法的我的tblContract實體中。我執行一個db.ApplyCurrentValues(foo);

現在,這裏的妙語:我的數據庫,值75被保存。沒有小數點,什麼都沒有。所以我現在可以將它傳遞給我的方法,但我無法將它保存在數據庫中。

最後更新:

我解決它。對於那些對答案感興趣的人:如果你沒有指定小數點的比例,那麼它就是0.我似乎記得EF的標準是2,但我可能會誤解。

回答

1

找到它。實體框架將我的小數四捨五入設置爲整數(1.0)。 更改標準設置,問題解決:)