MVC在哪里渲染菜单视图

时间:2008-12-23 09:47:53

标签: asp.net-mvc

这就是我要做的事情:

在一个页面上,我将拥有一个独立于该页面的LeftMenu,以及一个依赖于该用户当前所在页面的RightMenu。

我想从asp.net使用MVC。我可以使用RenderPartial来渲染菜单,但另一方面,View不应该真正处理这个 - 所以在我看来,我在思考WinForms而不是MVC。

另外,RightMenu必须了解当前显示的内容,以便根据上下文显示正确的菜单项。

你会如何处理这种情况?此外,任何谈论此事的链接都将非常感激。

编辑当我说视图不应该处理这个时我在每个视图中都在考虑RenderPartial而且这有点令人讨厌 - 我想主页方法然后每个控制器都放在ViewModel中所以RightMenu会知道要渲染的内容可能就是我正在寻找的东西。

4 个答案:

答案 0 :(得分:1)

您最好的选择是将菜单放在母版页中,并将该母版页分配给需要菜单的任何视图。

答案 1 :(得分:1)

在MVC CTP的早期,我们详细讨论了这个问题。

我不相信控制器应该将各种有些不相关的数据(到它的任务)填充到ViewModel来驱动菜单。

其中一个早期建议就是使用AJAX在控制器上调用不同的动作来获取菜单数据,我认为这很糟糕。

自CTP以来,我一直没有使用MVC,但我相信开发了一个名为RenderAction的折衷方案,它允许View(或母版页)调用控制器并生成局部视图。

这个MVC的想法确实崩溃了,因为你在视图中开始得到太多的逻辑。

答案 2 :(得分:0)

对于左侧菜单,将其放在母版页中并使用部分(用户控件)。

对于右侧菜单,请查看使用RenderAction HtmlHelper扩展名。这允许局部视图旋转其自己的控制器并返回独立于主视图控制器的ViewData。此外,您可以将数据从主视图页面的ViewData传递到操作方法,以自定义要显示的数据。

答案 3 :(得分:-1)

假设一个像框架的图块你可以分开左边有菜单而右边是body.So当你创建模板时使用右边部分插入独立加载的页面。你可以查找[{ {3}}