Вопрос по asp.net-mvc-3 – Форматирование валюты 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">
Любая помощь будет признательна, спасибо!
Ты можешь украсить свой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)
ViewData.Model
вdecimal
после преобразования или разбора его на единицу дляTextBox
, чтобы удовлетворить правильную перегрузку.string.Format("{0:c}", (decimal)decimal.Parse(Model))) )
"{0:C0}"
?