36

我正在尝试将 Html.EditorFor 文本框的格式设置为具有货币格式,我试图将其基于该线程String.Format for currency on a TextBoxFor。但是,我的文本仍然显示为 0.00,没有货币格式。

<div class="editor-field">
        @Html.EditorFor(model => model.Project.GoalAmount, new { @class = "editor-     field", Value = String.Format("{0:C}", Model.Project.GoalAmount) })

有我正在做的代码,这里是网站本身包含在编辑器字段 div 中的该字段的 html。

<input class="text-box single-line valid" data-val="true" 
 data-val-number="The field Goal Amount must be a number." 
 data-val-required="The Goal Amount field is required."
 id="Project_GoalAmount" name="Project.GoalAmount" type="text" value="0.00">

任何帮助将不胜感激,谢谢!

4

1 回答 1

74

您可以使用以下属性装饰您的GoalAmount视图模型[DisplayFormat]属性:

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

并且简单地认为:

@Html.EditorFor(model => model.Project.GoalAmount)

EditorFor 助手的第二个参数根本不像你想象的那样做。它允许您将额外的 ViewData 传递给编辑器模板,它不是 htmlAttributes。

另一种可能性是为货币 ( ~/Views/Shared/EditorTemplates/Currency.cshtml) 编写自定义编辑器模板:

@Html.TextBox(
    "", 
    string.Format("{0:c}", ViewData.Model),
    new { @class = "text-box single-line" }
)

进而:

@Html.EditorFor(model => model.Project.GoalAmount, "Currency")

或使用[UIHint]

[UIHint("Currency")]
public decimal GoalAmount { get; set; }

进而:

@Html.EditorFor(model => model.Project.GoalAmount)
于 2012-05-24T16:08:10.993 回答