我发现我的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?这是可接受的/良好的做法吗?
答案 0 :(得分:2)
将所有逻辑与视图分开是一种很好的做法。通过这种方法,您将能够测试您的逻辑。并且观点不可测试。
我通常将viewmodel传递给具有现有属性的视图。在你的情况下,它应该像LineClass。所以你会:
<tag class="@LineClass">...</tag>
您的视图模型是什么?您是否在视图中使用上下文中的模型(SQL /实体框架)?如果是这样,您应该考虑使用Automapper将这些模型映射到视图模型。
如果您有客户端JavaScript框架,则可以在那里处理它。在KnockoutJS中,您可以创建自定义绑定,在Angular中您可以使用指令。