asp.net mvc根据条件显示不同的内容

时间:2011-05-06 12:59:26

标签: asp.net-mvc extension-methods

我有两种不同类型的数据可供显示(例如用户和产品)。根据条件,我需要显示用户或产品。我听说最好的做法是每当我们想要添加if时我们需要引入扩展方法。但是用户和产品html似乎太复杂而无法硬编码到扩展方法中。有什么样的最佳实践可以解决这个问题吗?

3 个答案:

答案 0 :(得分:0)

我认为在视图中使用if的问题可能会引入业务逻辑(在表示层中没有位置)。

您对if的使用是否纯粹与演示有关?然后在视图中使用它。

if是否实现了一些业务逻辑?重新考虑你的设计。

如果您仍然在视图中使用if(并且不了解您的项目),我不确定您为什么需要使用扩展方法。我没有看到类似于以下内容的任何问题:

<%
    if (someCondition)
    {   
        Html.RenderAction("User", "Index");
    } 
    else
    {   
        Html.RenderAction("Product", "Index");
    }    
%>

答案 1 :(得分:0)

使用if stmt确实不是意大利面,因为你不会在代码之间来回走动。它也相当可读。在这种情况下使用扩展方法你不会硬编码任何html,但只是再次重定向到要返回的特定操作,所以它的问题是在视图中具有相同的代码 - 或者在扩展中处理的视图的逻辑方法。

答案 2 :(得分:0)

我决定使用this解决方案(#18 html帮助扩展程序)。将它与this扩展方法结合使用。它将允许写这样的东西html.RenderMyPageData(Model); 如果将在方法内部封装。并且它不会使用字符串构建器生成html,但会使用ready来处理部分视图。