C# MVC5的嵌套布局
我看到了一些关于这个话题的帖子: 这似乎总是有问题的。然而,他们都很老了,所以不知道事情是否发生了变化 基本上,我有一个主布局,和3个不同的身体模板的基础上什么样的网页是。例如: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
\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)
}