Форматирование валюты с использованием шаблона отображения в MVC
Я нашел этот пост о Display и EditorTemplates для MVC:
http://www.growingwiththeweb.com/2012/12/aspnet-mvc-display-and-editor-templates.html
Он создает шаблон отображения для удобного отображения десятичной дроби в формате знака валюты.
Модель, использованная в примере:
public class TestModel
{
public decimal Money { get; set; }
}
Шаблон отображения:
Views / Shared / DisplayTemplates / decimal.cshtml:
@model decimal
@{
IFormatProvider formatProvider =
new System.Globalization.CultureInfo("en-US");
<span class="currency">@Model.ToString("C", formatProvider)</span>
}
На моем веб-сайте у меня есть вспомогательный класс с методом для извлечения отформатированной строки валюты из десятичного числа, поэтому я бы заменил вышеупомянутое что-то вроде:
@model decimal
@(MyHelperClass.GetCurrencyString(Model))
И, наконец, вид, где мы хотим видеть отформатированную валюту:
@model TestModel
@Html.DisplayFor(e => e.Money)
Выход:
<span class="currency">$3.50</span>
Я могу реализовать это без каких-либо проблем. Но, конечно, у меня разные взгляды, где я хочу просмотреть форматированную валюту. Но в некоторых случаях я не хочу показывать знак валюты.
Мой вопрос сейчас заключается в том, как мне реализовать эту небольшую вариацию без особых излишеств в коде.
Вот моя текущая реализация:
Я изменил свой шаблон отображения на это:
@model decimal
@{
bool woCurrency = (bool)ViewData["woCurrency"];
}
@(MyHelperClass.GetCurrencyString(Model)Model,woCurrency))
Конечно, я также изменил метод GetCurrencyString, чтобы принять этот дополнительный атрибут.
На мой взгляд, теперь я должен предоставить и этот атрибут:
@Html.DisplayFor(m => m.Money, new { woCurrency = true })
Так на самом деле у меня все работает так, как должно работать. Но почему-то мне не нравится это решение, которое делает взгляд более сложным.
Мой вопрос к вам: есть ли другой способ реализовать что-то подобное? Или какой-нибудь совет для возможной оптимизации моего текущего решения?
Спасибо!