2009-10-07 75 views
6

在我们的标准Web表单ASP.NET解决方案中,我们通常在主页面中包含一系列用户控件,并确定它们是否在其代码后面显示。 ASP.NET MVC中实现相同目标的最佳方法是什么?如何在ASP.NET MVC中控制局部视图的条件显示

你很明显可以在主页面或局部视图中显示if语句,但这会让我感到杂乱无章,并且违反了将业务逻辑放在视图之外的原则。它还要求将必要的信息放入所有的视图模型中,或者从基本控制器继承,这似乎是一件很简单的事情。

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

回答

3

打破了保持业务逻辑出视图

的原则,是不是业务逻辑。当您决定是否显示某些内容时,它是表示逻辑。可以在那里。

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

至于关注的完全分离,是的,可能的WebForms看似做到这一点,但它是相当的基本机制的一个巨大的抽象。通常它会导致代码隐藏中的业务逻辑,也就是说,在业务逻辑所属的表示层中,只有它属于视图。

+1

我第二。有一堆“RenderPartialIfNotNull(”Foo“,Model.Something)”调用。 – 2009-10-07 08:49:07

+0

对不起,是的,我的意思是UI逻辑不是业务逻辑 – 2009-10-07 15:11:00

相关问题