如何在 ASP.NET MVC 中控制局部视图的条件显示
Posted
技术标签:
【中文标题】如何在 ASP.NET MVC 中控制局部视图的条件显示【英文标题】:How to control conditional display of partial views in ASP.NET MVC 【发布时间】:2009-10-07 08:25:54 【问题描述】:在我们的标准 Web 表单 ASP.NET 解决方案中,我们通常在母版页中有一系列用户控件,并确定它们是否显示在其背后的代码中。在 ASP.NET MVC 中实现相同目标的最佳方法是什么?
您显然可以将 if 语句放在母版页或部分视图中,但这让我觉得很混乱,并且违反了将业务逻辑排除在视图之外的原则。它还需要将必要的信息放入所有视图模型中,或者从基本控制器继承,这对于如此简单的事情似乎有很多麻烦。
我正在考虑使用 RenderAction 并返回一个完全空白的视图以防止任何输出 - 这是一个好的模式吗?
【问题讨论】:
【参考方案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”语句。
谢谢,
拉吉什
【讨论】:
以上是关于如何在 ASP.NET MVC 中控制局部视图的条件显示的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ASP.NET MVC 中使用 Ajax 调用刷新局部视图?
在 ASP.NET MVC 中使用 jQuery 渲染局部视图