C# MVC5的嵌套布局

C# MVC5的嵌套布局,c#,asp.net-mvc,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 5,我看到了一些关于这个话题的帖子: 这似乎总是有问题的。然而,他们都很老了,所以不知道事情是否发生了变化 基本上,我有一个主布局,和3个不同的身体模板的基础上什么样的网页是。例如: \u Layout.cshtml <html lang="en"> <head> </head> <body style="padding: 50px 0;"> <header class="navbar navbar-d

我看到了一些关于这个话题的帖子:

这似乎总是有问题的。然而,他们都很老了,所以不知道事情是否发生了变化

基本上,我有一个主布局,和3个不同的身体模板的基础上什么样的网页是。例如:

\u Layout.cshtml

<html lang="en">
    <head>
    </head>
    <body style="padding: 50px 0;">
        <header class="navbar navbar-default navbar-fixed-top" role="banner">
            @Html.Partial("_MenuPartial")
        </header>
        <ol class="breadcrumbs">
            @RenderSection("breadcrumbs", true);
        </ol>
        <section>
            @RenderBody();
        </section>
            <footer class="navbar navbar-default navbar-fixed-bottom">
            @Html.Partial("_FooterPartial")
        </footer>
        @Html.Partial("_ScriptInitPartial")
    </body>
</html>
<div class="panel panel-primary">
    <div class="panel-body">
        <div class="col-lg-2">
            <ul class="nav nav-pills nav-stacked">
                @RenderSection("tabs", true)
            </ul>
        </div>
        <div class="col-lg-10">
            <div class="tab-content">
                @RenderBody()
            </div>
        </div>
    </div>
    <div class="panel-footer">
        <button class="btn btn-primary" data-bind="enable: Entity.isValid, click: save">Save</button>
    </div>
</div>
现在,调用时,这将呈现良好的效果。差不多

部分的渲染必须在看起来的子布局中。如果我尝试将面包屑放入
\u Layout.cshtml
,它将失败,因为
\u LayoutForEdit.cshtml
从未呈现过面包屑。我怎样才能解决这个问题


以下部分已经定义,但尚未呈现在布局页面“~/Views/Shared/\u LayoutForEdit.cshtml”:“breadcrumbs”

不确定您是否仍然需要帮助,但我会回答

RenderSection方法根据

public HelperResult RenderSection(
字符串名,
布尔要求
)

将呼叫更改为:

@渲染部分(“面包屑”,假)


如果section“required”参数为false,则如果视图未包含该节,则不会给出错误。

我知道这是一个老问题。我想无论如何我都会分享这个,以防其他人(像我一样)碰到这个

在子布局的底部,定义一个与父布局中的部分同名的部分。在本节中,您只需放置一个
@RenderSection
,再次指定与前面相同的名称。一旦这样做到位,您基本上就可以将子布局“绕过”页面中的内容,直至其父布局:

@section breadcrumbs {
    @RenderSection("breadcrumbs", true)
}

到目前为止,我的最佳解决方案是将所有部分移动到模板,但这会导致重复。我不再需要帮助,而且听起来您误解了这个问题。我在正文中定义面包屑,这是附加到局部视图的局部视图,嵌套阻止了检测到的部分。@Tim他实际上正确地回答了你的问题。如果这不是你想要的,那么你的问题的表述是错误的
@section breadcrumbs {
    @RenderSection("breadcrumbs", true)
}