Я пытаюсь отформатировать текстовое поле Html.EditorFor, чтобы оно имело форматирование валюты, я пытаюсь основываться на этой теме https://stackoverflow.com/questions/6963497/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) })
Вот код того, что я делаю, а вот html для этого поля на самом сайте, содержащийся в div поля редактора, конечно.
<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">
Любая помощь будет оценена по достоинству, спасибо!
Вы можете украсить свойство модели представления 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)