Подтвердить что ты не робот

Форматирование валюты MVC

Я пытаюсь отформатировать текстовое поле 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) })

Существует код для того, что я делаю, и вот 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">

Любая помощь будет оценена, спасибо!

4b9b3361

Ответ 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)