Can I have/chain more than 1 _Layout pages in MVC

2020-07-01 15:30发布

I have a layout page and some pages that use it. But I want to implement a navigation control on some of the sub-pages that use it. So I want to use another nested layout page. Is this possible?

3条回答
叛逆
2楼-- · 2020-07-01 16:07

Yes, it works great. Just tell your layout page to use another layout page

@{ Layout = "pathToMyOtherLayout"; }

You can also use sections to pass through to the parent layouts. For example:

@Section Headers {@RenderSection("Headers")}
查看更多
淡お忘
3楼-- · 2020-07-01 16:11

You can chain pages just like you can Master Pages, in _ViewStart.cshtml you will see how the layout page is defined:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

You can just add this section in the _Layout.cshtml to reference another parent, or add it to an individual view to reference a different layout view.

ScottGu has a post with more info on Razor Layouts

I use this exact method for what you are talking about on some ecommerce sites, where you are in the checkout process I do not want any distractions (navigation, etc) within the view, so instead of having some special case if checkout in layout, I make a LayoutBrandingOnly and a Layout which "inherits" from it so I don't have to repeat all the branding html.

查看更多
做自己的国王
4楼-- · 2020-07-01 16:24

You can solve this easily enough in one layout page by using sections. check http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx

查看更多
登录 后发表回答