货币格式MVC(Currency Formatting MVC)

2019-06-24 18:52发布

我试图格式化Html.EditorFor文本框有货币格式,我想它的基础关闭该线程的String.Format货币对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">

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

Answer 1:

你可以装饰你的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)


文章来源: Currency Formatting MVC