如何将布尔逻辑移出我的视图?

时间:2009-08-28 15:45:30

标签: c# asp.net-mvc

在我的ASP.NET MVC视图中,我根据模型中设置的布尔值选择一个精灵,如下所示:

<div class="sprite-icon_dog<% =(Model.HasNewDog ? "_new" : "") %>"></div>

这很难看,我不喜欢它。

如果sprite-icon_dog_newModel.HasNewDog,我的目标是使用true,如果sprite-icon_dog为假,则使用Model.HasNewDog

更优雅,更易读的方法是什么?

2 个答案:

答案 0 :(得分:5)

我认为HTML Helper会成为可能吗?

public static string DogDiv(this HTMLHelper html, bool HasDog)
{
  return "...."
}

在您看来:

<%=Html.DogDiv(Model.HasDog) %>

希望有所帮助,

答案 1 :(得分:0)

这很难看,但它可能是最好的选择。如果将逻辑移动到html帮助器,则现在模糊了显示内容和业务逻辑之间的界限。如果您想更改标记或CSS,除非您更改Html帮助程序类中的代码,否则您将受限于您可以执行的操作。

在我看来,丑陋的一部分已经习惯了MVC模型。 MVC的一个支柱是在显示,业务逻辑和数据模型之间提供严格的分离,但是如果你开始在帮助器中添加显示逻辑,它就会开始否定MVC的目的。