Asp.net mvc 在MVC Razor中,如何在子布局下定义渲染部分?

Asp.net mvc 在MVC Razor中,如何在子布局下定义渲染部分?,asp.net-mvc,razor,Asp.net Mvc,Razor,我有一个顶级的_Layout.cshtml,看起来像这样: <html> <head> @RenderSection("Header", required: false) </head> <body> @RenderSection("LeftPane", required: false) @RenderSection("RightPane", required: false) @RenderBody() <

我有一个顶级的_Layout.cshtml,看起来像这样:

<html>
<head>
    @RenderSection("Header", required: false)
</head>
<body>

    @RenderSection("LeftPane", required: false)
    @RenderSection("RightPane", required: false)
    @RenderBody()

</body>
</html>
@section Header {@RenderSection("Header", false)}

@RenderSection(“标题”,必需:false)
@RenderSection(“LeftPane”,必填项:false)
@RenderSection(“RightPane”,必填项:false)
@RenderBody()
然后我有两个“子布局”。一个只定义了LeftPane部分,另一个定义了LeftPane和RightPane。这些子布局称为_LeftPane.cshtml和_LeftPlusRightPane.cshtml,它们的布局设置为“_Layout.cshtml”

然后在每个View.cshtml文件中,我将布局设置为_LeftPane.cshtml或_LeftPlusRightPane.cshtml,具体取决于我希望在页面上显示的内容

一切正常。问题在于我在文档的
部分添加的新“标题”部分。此部分未在子布局中定义,而是在实际视图中定义。当我尝试以这种方式查看某个内容时,会出现以下错误:

已为布局页面“~/Views/Shared/\u LeftPlusRightPane.cshtml”定义了以下部分,但尚未呈现这些部分:“Header”。


我不想在子布局中呈现标题部分,我想在_Layout.cshtml文件中呈现它。如何从低级视图“穿过”定义的标题部分,穿过子布局,直到顶部布局?

您可以嵌套布局。因此_Layout2具有
Layout=“_Layout.cshtml”

还可以在每个视图子文件夹中使用_ViewStart文件为该子文件夹指定不同的默认布局

要“通过”该部分,您只需执行以下操作:

<html>
<head>
    @RenderSection("Header", required: false)
</head>
<body>

    @RenderSection("LeftPane", required: false)
    @RenderSection("RightPane", required: false)
    @RenderBody()

</body>
</html>
@section Header {@RenderSection("Header", false)}

这允许您将内容向上传递。

您可以粘贴您的分区吗?我认为您只是没有在各个视图中正确地包装这些部分。我唯一遇到问题的部分是新的标题部分。我的观点中有一个例子:@section Header{}谢谢,这正是我想要做的!谢谢,这对我很有帮助