动态渲染_layout.cshtml mvc 3上的局部视图

时间:2011-08-23 02:31:14

标签: asp.net-mvc-3 partial-views

我想根据我的_layout.cshtml文件中加载的页面显示不同的导航链接。

我考虑过检查网址并在if块中调用Html.RenderPartial,但这看起来很笨拙。

有没有办法用控制器来控制它?

1 个答案:

答案 0 :(得分:1)

如果您确实需要在不同页面上使用不同的导航链接,那么我认为您应该在这些单独的页面上指定不同的布局页面。然后,这些不同的布局应将_layout指定为其布局,使其成为主布局

例: _navlinks1.cshtml

@{
   Layout = "_layout"
 }

@RenderBody()

@section navlinks
{
    @*create navlinks specific to current page*@
}

然后在您的_layout页面中,您可以将@RenderSection("navlinks", false)放在您想要导航链接的位置。

但是,如果由于某种原因,您需要为每个页面提供一组独特的导航链接,那么在您的布局中放置导航链接可能没有意义。让所有模型继承基础模型并使用包含导航链接数据的项目列表可能会更好。然后调用部分视图,将该数据处理为视图中的正确链接。