【问题标题】:How to control conditional display of partial views in ASP.NET MVC如何在 ASP.NET MVC 中控制局部视图的条件显示
【发布时间】:2009-10-07 08:25:54
【问题描述】:

在我们的标准 Web 表单 ASP.NET 解决方案中,我们通常在母版页中有一系列用户控件,并确定它们是否显示在其背后的代码中。在 ASP.NET MVC 中实现相同目标的最佳方法是什么?

您显然可以将 if 语句放在母版页或部分视图中,但这让我觉得很混乱,并且违反了将业务逻辑排除在视图之外的原则。它还需要将必要的信息放入所有视图模型中,或者从基本控制器继承,这对于如此简单的事情似乎有很多麻烦。

我正在考虑使用 RenderAction 并返回一个完全空白的视图以防止任何输出 - 这是一个好的模式吗?

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    打破了业务逻辑不可见的原则

    这不是业务逻辑。当您确定是否显示某些内容时,它是表示逻辑。放在那里没问题。

    您可以决定是否显示某些内容并在模型中设置一些标志(例如,您可以制作 BaseModel 或 MasterModel)。然后您的主视图、部分视图本身或 HTML 助手将根据这些标志执行条件渲染。

    关于关注点的清晰分离,是的,WebForms 看似可以做到,但它是对底层机制的巨大抽象。通常它会导致业务逻辑在代码隐藏中,也就是说,在表示层中业务逻辑属于不超过它属于视图。

    【讨论】:

    • 我第二个。收到一堆“RenderPartialIfNotNull("Foo", Model.Something)" 调用。
    • 对不起,是的,我的意思是 UI 逻辑而不是业务逻辑
    【解决方案2】:

    您可以通过创建我最近的帖子http://www.rajeeshcv.com/2010/01/asp-net-mvc-conditional-rendering-partial-views/ 中提到的 Html 扩展方法来避免混乱的“If”语句。

    谢谢,

    拉吉什

    【讨论】:

      猜你喜欢
      • 2010-11-25
      • 2011-09-11
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多