【发布时间】:2013-06-03 06:20:51
【问题描述】:
我发现这篇关于 MVC 的 Display 和 EditorTemplates 的帖子:
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 })
所以实际上我的一切工作都像它应该工作的那样工作。但不知何故,我不喜欢这种使视图更复杂的解决方案。
我的问题是:还有其他方法可以实现这样的事情吗?或者有什么建议可以优化我当前的解决方案?
谢谢!
【问题讨论】:
标签: asp.net-mvc model-view-controller mvc-editor-templates asp.net-mvc-templates