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

Asp.net mvc asp.net mvc根据条件显示不同的内容,asp.net-mvc,extension-methods,Asp.net Mvc,Extension Methods,我有两种不同类型的数据要显示,例如用户和产品。根据情况,我需要显示用户或产品。我听说最佳实践是,每当我们想添加if-to-View时,就需要引入扩展方法。但用户和产品html似乎太复杂,无法硬编码到扩展方法中。有什么样的最佳实践可以解决这个问题吗?我想在视图中使用ifs的问题是,这可能会引入在表示层中没有位置的业务逻辑 您使用if是否纯粹与演示有关?然后在视图中使用它 if是否实现了一些业务逻辑?重新考虑你的设计 如果您仍然在视图中使用If,并且不知道更多关于您的项目的信息,我不确定您为什么需要

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

我想在视图中使用ifs的问题是,这可能会引入在表示层中没有位置的业务逻辑

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

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

如果您仍然在视图中使用If,并且不知道更多关于您的项目的信息,我不确定您为什么需要使用扩展方法。我看不出类似的问题:

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

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

我决定使用解决方案18 html助手扩展。将其与扩展方法相结合。它将允许编写类似以下html.RenderMyPageDataModel的内容;
如果将在方法内部封装。它不会使用字符串生成器生成html,但会使用现成的部分视图。

Graham,这是一种方法。但是看起来很尴尬,不是吗?如果我有5个相似的东西要展示,我会有意大利面代码。这就是为什么不使用它推荐的制作和扩展方法。您将像Html.MySpecialMarkupModel一样使用它