在我们的标准Web表单ASP.NET解决方案中,我们通常在母版页中拥有一系列用户控件,并确定它们是否在其代码中显示。 ASP.NET MVC中实现相同目标的最佳方法是什么?
显然,你可以将if语句放在母版页或局部视图中,但这样会让我感到麻烦,并打破了将业务逻辑排除在视图之外的原则。它还需要将所需的信息放入所有视图模型中,或者从基本控制器继承,这对于如此简单的事情来说似乎很麻烦。
我正在考虑使用RenderAction并返回一个完全空白的视图以防止任何输出 - 这是一个好的模式吗?
答案 0 :(得分:3)
打破了将业务逻辑排除在视图之外的原则
这不是业务逻辑。当您确定是否显示某些内容时,它是表示逻辑。把它放在那里是可以的。
您可以决定是否显示某些内容并在模型中设置一些标志(例如,您可以制作BaseModel或MasterModel)。然后,您的主视图,部分视图本身或HTML帮助程序将根据这些标志执行条件呈现。
关于关注点的清晰分离,是的,WebForms似乎可以做到,但它是对底层机制的巨大抽象。通常,它会导致在代码隐藏中具有业务逻辑,这意味着,在业务逻辑所属的表示层中,它不属于它所属的视图。
答案 1 :(得分:1)
您可以通过创建我最近发布的帖子http://www.rajeeshcv.com/2010/01/asp-net-mvc-conditional-rendering-partial-views/
中提到的Html扩展方法来避免杂乱的“If”语句。谢谢,
Rajeesh