回发带小数的编辑器字段时出错

时间:2012-05-12 23:28:36

标签: c# asp.net-mvc-3

当我回发下面的字段时,我收到此错误:无法将“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>

这两个都是模型中的十进制属性...它是否尝试以字符串形式发回?然后如何在回发之前将其转换回小数?有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:2)

试试这个:

在您的视图模型中:

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

在你看来:

@Html.EditorFor(model => model.Donation.Amount)