视图中的UI逻辑

时间:2015-02-25 00:41:12

标签: asp.net-mvc twitter-bootstrap

我发现我的UI代码看起来相当混乱,因为我不得不将.Net格式代码添加到我的View代码中。一个例子:

<tr data-url="@Url.Action("EditTransaction", "Transaction", new {id=@line.Id})" class="clickableRow @(line.IsDeposit ? "credit_colour" : "") ">

因此,如果是line.IsDeposit,那么该行需要使用'credit_colour'类 - 否则,默认的TR类。

我有更多这些,有些更复杂。

上述代码中的主要问题是:

  

@(line.IsDeposit?“credit_colour”:“”)

在我的视图代码中使用这样的格式化条件,或者这种逻辑是否应该在Controller方法中执行,并以某种方式传递给View?这是可接受的/良好的做法吗?

1 个答案:

答案 0 :(得分:2)

将所有逻辑与视图分开是一种很好的做法。通过这种方法,您将能够测试您的逻辑。并且观点不可测试。

我通常将viewmodel传递给具有现有属性的视图。在你的情况下,它应该像LineClass。所以你会:

<tag class="@LineClass">...</tag>

您的视图模型是什么?您是否在视图中使用上下文中的模型(SQL /实体框架)?如果是这样,您应该考虑使用Automapper将这些模型映射到视图模型。

如果您有客户端JavaScript框架,则可以在那里处理它。在KnockoutJS中,您可以创建自定义绑定,在Angular中您可以使用指令。

相关问题