应该使用Razor视图内部的功能吗?

时间:2013-10-16 23:50:04

标签: asp.net-mvc asp.net-mvc-4 razor-2

我的问题是关于使用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的新手,但看起来它违背了分离原则。请指导我做这些格式化和功能主义者的正确方法。不确定是否有一种最佳实践或指导原则?

非常感谢你的指导。

1 个答案:

答案 0 :(得分:2)

这根本不一定是坏事。实际上,在显示相关的视图中,比在控制器或类似设备中执行操作更好。

但是,我同意你的担忧,这可能不是最好的方法。

ASP.NET MVC解决这个问题的方法是通过使用属性。特别是使用DisplayFormat属性。

你所面临的问题(我之前遇到的)是,虽然似乎属于视图(因为它是关于事物的显示方式),但它很快意味着你在许多视图中一遍又一遍地写同样的东西,重复代码。

使用[DisplayFormat]等属性,您可以根据自己的需要修改视图模型属性。

[DisplayFormat(DataFormatString="{0:C}")]
public object StandardCost;

对于奖励积分,您甚至可以创建自己的自定义属性并对其进行适当命名,以减少代码重复。

[Percentage]
public int Rate;
[Currency]
public int Cost;