控制器可以影响_layout.cshtml文件吗?

7 asp.net-mvc controller razor asp.net-mvc-3

我被卡住了!我的印象是_layout.cshtml文件用于类似MasterPage的内容.每一页都呈现出一切.当然,我想编写用于在该文件中呈现侧边栏菜单的代码.

我想从我的数据库中动态显示一个类别列表,但我遇到了将类别的实际模型传递给Layout.cshtml的问题,因为似乎没有控制器实际触及它.

有什么建议?

否则请告诉我如何解决这个问题.在过去的三天里,我一直在绞尽脑汁,仍然没有优雅的解决方案.

我需要:

  1. 从DB动态获取类别列表.
  2. 在每个视图上显示此类别列表.(因此使用_layout.cshtml)
  3. 优雅地处理每个不同的类别点击.

我的智慧结束了.:P将如何解决这个问题?

Pau*_*les 1

您传递给视图的任何视图模型都会在母版页中自动可用。如果您不使用最好的方法 RenderAction/Action,那么您必须在每个操作中创建必要的母版页数据并将其添加到 viewdata - 或者通过为包含所有母版页数据的强类型视图模型创建一个公共基类或者使用 viewdata 字典。

不过,我强烈建议您采用 html.action 方法。这样,您就有了一个完全独立的控制器操作来处理您的类别列表。此操作可以检索必要的类别数据并将类别列表用户控件作为部分视图返回,您不必担心此数据会污染所有其他操作。