如何在ASP.NET MVC中控制部分视图的条件显示

时间:2009-10-07 08:25:55

标签: asp.net-mvc

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

显然,你可以将if语句放在母版页或局部视图中,但这样会让我感到麻烦,并打破了将业务逻辑排除在视图之外的原则。它还需要将所需的信息放入所有视图模型中,或者从基本控制器继承,这对于如此简单的事情来说似乎很麻烦。

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

2 个答案:

答案 0 :(得分:3)

  

打破了将业务逻辑排除在视图之外的原则

这不是业务逻辑。当您确定是否显示某些内容时,它是表示逻辑。把它放在那里是可以的。

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

关于关注点的清晰分离,是的,WebForms似乎可以做到,但它是对底层机制的巨大抽象。通常,它会导致在代码隐藏中具有业务逻辑,这意味着,在业务逻辑所属的表示层中,它不属于它所属的视图。

答案 1 :(得分:1)

您可以通过创建我最近发布的帖子http://www.rajeeshcv.com/2010/01/asp-net-mvc-conditional-rendering-partial-views/

中提到的Html扩展方法来避免杂乱的“If”语句。

谢谢,

Rajeesh