我的问题是关于使用MVC Razor视图引擎。
要显示数据,可以使用某些C#函数作为内联函数,例如
<td>@(Html.DisplayFor(m=>row.CurrencyFrom).ToString().Substring(3,3))</td>
<td>@(Html.DisplayFor(m=>row.rate).ToString("0.#####"))</td>
在这里使用这些功能是一种好方法吗?对不起,我是MVC和Razor的新手,但看起来它违背了分离原则。请指导我做这些格式化和功能主义者的正确方法。不确定是否有一种最佳实践或指导原则?
非常感谢你的指导。
答案 0 :(得分:2)
这根本不一定是坏事。实际上,在显示相关的视图中,比在控制器或类似设备中执行操作更好。
但是,我同意你的担忧,这可能不是最好的方法。
ASP.NET MVC解决这个问题的方法是通过使用属性。特别是使用DisplayFormat属性。
你所面临的问题(我之前遇到的)是,虽然似乎属于视图(因为它是关于事物的显示方式),但它很快意味着你在许多视图中一遍又一遍地写同样的东西,重复代码。
使用[DisplayFormat]
等属性,您可以根据自己的需要修改视图模型属性。
[DisplayFormat(DataFormatString="{0:C}")]
public object StandardCost;
对于奖励积分,您甚至可以创建自己的自定义属性并对其进行适当命名,以减少代码重复。
[Percentage]
public int Rate;
[Currency]
public int Cost;