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

6
在我们标准的ASP.NET Web表单解决方案中,通常在主页面中有许多用户控件,并在其代码后台确定它们是否显示。在ASP.NET MVC中实现相同目的的最佳方法是什么?
显然,您可以在主页面或部分视图中使用if语句,但我认为这很混乱,并且违反了将业务逻辑保持在视图之外的原则。这还需要将必要的信息放入所有视图模型中,或从基础控制器继承,对于如此简单的事情来说,这似乎很麻烦。
我想使用RenderAction并返回完全空白的视图来防止任何输出 - 这是一个好的模式吗?
2个回答

3
破坏了将业务逻辑与视图分离的原则。这并不是业务逻辑,而是演示逻辑,当您确定是否显示某些内容时,它就存在于那里。在模型中设置一些标志,您可以决定是否显示某些内容(例如,可以创建BaseModel或MasterModel)。然后,您的主视图、部分视图本身或HTML助手将根据这些标志执行条件渲染。至于关注点的清晰分离,是的,WebForms看起来似乎可以做到,但它实际上是对底层机制的巨大抽象。通常会导致业务逻辑出现在代码后台,也就是说,出现在展示层中,而业务逻辑与视图一样,不应该属于展示层。

1
我同意。有很多“RenderPartialIfNotNull(“Foo”,Model.Something)”调用。 - Arnis Lapsa
抱歉,是的,我指的是UI逻辑而不是业务逻辑。 - Rob West

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接