Вопрос по asp.net-mvc-3 – Форматирование валюты MVC

30

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

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

Ваш Ответ

1   ответ
68

Ты можешь украсить свой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)
Какая строка формата для валюты (фунтов) без пенсов? Я пока не могу найти его. Благодарность Doomsknight
Мне пришлось разыграть твоюViewData.Model вdecimal после преобразования или разбора его на единицу дляTextBox, чтобы удовлетворить правильную перегрузку.string.Format("{0:c}", (decimal)decimal.Parse(Model))) ) The Muffin Man
Как вы можете обойти проблему, которую вызывает отформатированное поле валюты с привязкой модели при публикации формы? Поскольку в поле формы есть недопустимые символы для десятичного числа, привязка не заполняет значение при публикации формы. Кажется, тяжело делать то, что нужно для этого сценария ... Mark
@ Doomsknight, ты пробовал"{0:C0}"? Darin Dimitrov
отлично работал, спасибо! :) Ryguy

Похожие вопросы