代码之家  ›  专栏  ›  技术社区  ›  sirrocco

MVC渲染菜单视图的位置

  •  0
  • sirrocco  · 技术社区  · 16 年前

    我想做的是:

    在一个页面上,我会有一个独立于页面的leftmenu,以及一个依赖于用户当前所在页面的rightmenu。

    我想使用ASP.NET中的MVC。我可以使用renderpartial来呈现菜单,但另一方面,视图不应该真正处理这个问题——所以在我看来,我认为winforms比mvc更多。

    另外,为了根据上下文显示正确的菜单项,右菜单必须稍微了解当前显示的内容。

    你将如何处理这种情况。此外,任何有关这方面的链接都将非常感谢。

    编辑 当我说视图不应该处理这个问题时,我在考虑每个视图中的renderpartial,这有点讨厌——我猜是masterpage方法,然后每个控制器在viewmodel中放置一些东西,以便右菜单知道渲染什么可能是我要找的。

    4 回复  |  直到 16 年前
        1
  •  1
  •   Chris    16 年前

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

        2
  •  1
  •   FlySwat    16 年前

    在MVC CTP的早期,我们对此进行了详细的讨论。

    我不认为控制器应该将各种不相关的数据(与其任务)填充到视图模型中来驱动菜单。

    早期的一个建议是使用Ajax在控制器上调用不同的操作来获取菜单数据,我认为这太可怕了。

    自从CTP以来,我一直没有和MVC合作过多,但是我相信一个折衷方案被开发出来,叫做renderAction,它允许一个视图(或母版页)调用一个控制器并生成一个局部视图。

    在这个领域中,MVC的思想真的崩溃了,因为在您的视图中开始有太多的逻辑。

        3
  •  0
  •   Matthew    16 年前

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

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

        4
  •  -1
  •   GustyWind    16 年前

    假设有一个类似于图块的框架,你可以将左边有菜单,右边是正文。所以当你创建一个模板时,使用右边的部分来插入独立加载的页面。你可以查找[ http://tiles.apache.org/index.html][1]