asp.net-mvc - 在 MVC Razor 中,如何在子布局下面定义 RenderSection?

标签 asp.net-mvc razor

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

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

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

</body>
</html>

然后我有两个“子布局”。一个仅定义 LeftPane 部分,另一个定义 LeftPane 和 RightPane。这些子布局称为 _LeftPane.cshtml 和 _LeftPlusRightPane.cshtml,并且它们的布局设置为“_Layout.cshtml”。

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

一切正常。问题出在我在 <head> 中添加的新“标题”部分。文件的一部分。该部分不是在子布局中定义的,而是在实际 View 中定义的。当我尝试以这种方式查看某些内容时,出现错误:

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

我不想在子布局中渲染标题部分,我想在 _Layout.cshtml 文件中渲染它。如何从低级 View “传递”定义的标题部分,通过子布局,直到顶部_Layout?

最佳答案

您可以嵌套布局。所以 _Layout2 有 Layout = "_Layout.cshtml";

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

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

@section Header {@RenderSection("Header", false)}

这允许您在链上传递内容。

关于asp.net-mvc - 在 MVC Razor 中,如何在子布局下面定义 RenderSection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7602432/

相关文章:

asp.net-mvc - HTTP 错误 500.19 和错误代码 : 0x80070021

asp.net-mvc - Html.DropDownList 大小属性

c# - 我怎样才能让这个 ASP.NET MVC SelectList 工作?

asp.net - .NET MVC FileResult 在 Web 窗体中等效

html - .NET MVC 无法使用删除标记布置图像

c# - 发布不可编辑的值

c# - Razor Form 模型 - 两个强制属性之一

c# - Asp.Net MVC Razor BootStrap 输入表单

c# - 将数组传递给 ASP.NET Core 中的数据属性

jQuery 在 asp net core 2 razor 中设置日期值