2011-12-08 21 views
2

現在、契約のフォームを作成しています。フィールドの1つはリベートのためのもので、Entity FrameworkのDecimalとして宣言されています。 値を入力して保存すると問題が発生します。MVC 2 - 10進数値が保存されません。

コードの概要:

EF:tblContract - >リベートが10進数フィールドです。

/編集ビューを作成します。

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

を、私はさまざまな方法で数字を入力しようとしました。

75:intに解析できるものを与えると、フィールドに正しい値が保存されます(奇妙なことに、後で表示されたときに小数点が表示されず、わずか75)。

75.25:[HttpPost] Editメソッドに渡される値を見ました(Createと同じ)。小数値を入力すると、変数はNULLになります。私outputscreenは、例外が発生した私を示しています

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

を私はまた、小数点/カンマがどうあるべきかについてのカルチャ設定を除外するために75,25を試してみましたが、同じ問題が発生します。 私は、intを含む他のいくつかのフィールドを持っています。それらはまったく同じ方法で処理されますが、Entity FrameworkはDecimalではなくInt32として認識します。 Int32はすべて動作しますが、Decimalは動作しません。

ここに何か不足していますか? MVCはintで動作するのでDecimalsでは動作しませんか?

さらに更新:

私が働いて、それの一部を得ました。私はコードを変更していない(いくつかのjQueryを除いて、私は説明する)。

75,25を入力すると、リベート変数がメソッドに正しく渡されます(私はベルギーにいるので、小数点以下の桁区切りに使用します:))置き換えるjQueryを追加しました。ユーザがデータを入力すると、それを容易にする。

私が変数をポストすると、小数点のリベートは75.25の値を持ちます(今ではEFは小数点を引き継ぎます)。リベートは既にメソッドに渡されたtblContractエンティティにあります。私はdb.ApplyCurrentValues(foo)を実行します。

ここで私のデータベースには値75が保存されています。小数点はありません。だから今私のメソッドに適切に渡すことができますが、データベースに保存することはできません。

最終更新:

私はそれを解決しました。答えが不思議な人には、小数点以下の桁数を指定しないと0になります。標準がEFの2であったのを覚えているようですが、間違いかもしれません。

答えて

1

見つけました。 Entity Frameworkは小数点以下の四捨五入を整数(1.0)に設定しました。 変更された標準設定、問題解決済み:)

関連する問題