Форматирование строки с двойными значениями валюты отображается неправильно.

Я использую MVC3 с подробным представлением, которое должно отображать отформатированные суммы в долларах, такие как 1200,00 долларов США. Контроллер передает в этом случае двойное значение для MonthlyMortgage для представления. Однако строка кода ниже не отображает правильное форматирование строки. То, что отображается, составляет 1200 долларов, а мне нужно 1200 долларов.

Я пытался:

[email protected]("{0:c}", Html.DisplayFor(model => model.MonthlyMortgage))

и я попробовал это:

[email protected]("{0:#,###,###,##0.000}", Html.DisplayFor(model => model.MonthlyMortgage))

Может кто-нибудь, пожалуйста, включите, почему это не работает?

 Davin Tryon24 июн. 2012 г., 10:11
Может быть дубликат этого:stackoverflow.com/questions/890100/…

Ответы на вопрос(2)

У @nemesv есть прямой ответ. Другим вариантом будет удалитьString.Format() из просмотра и использовать DataAnnotations для прикрепления форматирования к MonthlyMortgage.

Пример из MSDN:

[DisplayFormat(DataFormatString = "{0:C}")]
public Decimal ListPrice { get; set; }

И, кстати,#,###,###,##0.000 можно сократить до#,##0.00

Решение Вопроса

Вам не нужно использоватьHtml.DisplayFor потому что он вернетсяMvcHtmlString Итакstring.Format не применяется.

Просто используйтеstring.Format на вашей модели:

@String.Format("{0:c}", Model.MonthlyMortgage)

Обратите внимание, что вам не нужен символ "$" подписать больше, потому что{0:c} позаботится об этом.

 Shawn24 июн. 2012 г., 10:19
Это было хорошо. Я никогда не думал об использовании свойства Model напрямую, что исправило мою проблему. Спасибо...

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