MVC4、Code First、C# プロジェクト
money フィールドに明示的な値を入力するか、テーブルから読み込むと、TextBoxFor に小数点以下 2 桁の値が表示されます。フィールドが別のクラスの金額フィールドから取り込まれた場合、小数点以下 4 桁が表示されます。
public class Class1
{
[Column(TypeName = "money")]
public decimal Field1 { get; set; }
}
public class Class2
{
[Column(TypeName = "money")]
public decimal Field1 { get; set; }
}
public class Table1
{
public int Id { get; set; } public decimal Value { get; set; }
}
シナリオ 1:
Class1.Field1 = 14.95M;
シナリオ 2:
Class2.Field1 = Table1.Value;
シナリオ 3:
Class1.Field1 = Class2.Field1
意見
@Html.TextBoxFor(m => m.Class1.Field1, new { style = "width:70px;" })
シナリオ 1 と 2 では、TextBoxFor は小数点以下 2 桁を正しく表示し、シナリオ 3 では編集ボックスに小数点以下 4 桁を表示します。HTML属性を渡すことができるように、TextBoxForを使用する必要があります。
Class2 のインスタンス自体は、Class2 によって生成されたテーブルの値から事前設定されています。SSMS [テーブル内の該当するすべてのフィールドは (money, not null)] ですべてを調べましたが、デバッグで矛盾が見つかりませんでした。
シナリオ 3 の場合、TextBoxFor が誤って通貨の形式を表示するのはなぜですか (SQL は小数点以下 4 桁の精度で格納することを理解しています)。
さらに重要なのは、編集ボックスに常に小数点以下 2 桁で金額を表示するにはどうすればよいですか?