2011-05-06 123 views
0

我有2种不同类型的数据要显示(例如用户和产品)。根据条件我需要显示用户或产品。我听说最好的做法是,我们需要引入扩展方法,只要我们想要添加,如果查看。但是,用户和产品的html似乎太复杂,难以编码为扩展方法。有没有什么最好的做法来解决这个问题?asp.net mvc根据条件显示不同的内容

回答

0

我决定使用this解决方案(#18 html helper扩展)。将它与this扩展方法结合起来。它将允许编写像这样的html.RenderMyPageData(模型); 如果将在方法内部封装。并且它不会使用字符串生成器生成html,但会使用准备工作的部分视图。

0

我想在视图中有if s的关注可能会引入业务逻辑(它在表示层中没有位置)。

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

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

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

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

格雷厄姆,当然这是要走的道路之一。但看起来很尴尬,不是吗?如果我有5个类似的东西要显示,我会有意大利面代码。这就是为什么而不是使用,如果它的建议制作和扩展方法。你会使用它像Html.MySpecialMarkup(模型) – 2011-05-06 14:38:13

0

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