Форматирование валюты 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">

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

Ответы на вопрос(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)
 Doomsknight04 февр. 2013 г., 15:41
Какая строка формата для валюты (фунтов) без пенсов? Я пока не могу найти его. Благодарность
 Ryguy24 мая 2012 г., 18:10
отлично работал, спасибо! :)
 The Muffin Man07 февр. 2013 г., 05:54
Мне пришлось разыграть твоюViewData.Model вdecimal после преобразования или разбора его на единицу дляTextBox, чтобы удовлетворить правильную перегрузку.string.Format("{0:c}", (decimal)decimal.Parse(Model))) )
 Mark08 февр. 2013 г., 14:50
Как вы можете обойти проблему, которую вызывает отформатированное поле валюты с привязкой модели при публикации формы? Поскольку в поле формы есть недопустимые символы для десятичного числа, привязка не заполняет значение при публикации формы. Кажется, тяжело делать то, что нужно для этого сценария ...
 Darin Dimitrov04 февр. 2013 г., 16:43
@ Doomsknight, ты пробовал"{0:C0}"?

Ваш ответ на вопрос