1

以下のフィールドをポストバックすると、このエラーが発生します: タイプ 'System.Decimal' のオブジェクトをタイプ 'System.String' にキャストできません。

フォームの一部としてのフィールド:

<div class="editor-label">
        @Html.LabelFor(model => model.Donation.Amount)
    </div>    
    <div class="editor-field">
            @Html.TextBox("Amount", string.Format("{0:f2}", Model.Donation.Amount))
    <!--  @Html.EditorFor(model => model.Donation.Amount) -->
        @Html.ValidationMessageFor(model => model.Donation.Amount)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.Pledge.PledgeTotal)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Pledge.PledgeTotal)
        @Html.ValidationMessageFor(model => model.Pledge.PledgeTotal)
    </div>

どちらもモデルの小数プロパティです...文字列としてポストバックしようとしていますか? 次に、ポストバックする前にそれを10進数に戻すにはどうすればよいですか? 何かご意見は?ありがとう。

4

1 に答える 1

2

これを試して:

あなたのビューモデルで:

[DisplayFormat(DataFormatString = "{0:F2}", ApplyFormatInEditMode = true)]
public decimal Amount { get; set; }

そしてあなたの見解では:

@Html.EditorFor(model => model.Donation.Amount)
于 2012-05-12T23:39:26.417 に答える