使用嵌套布局时,是否可以将Razor引擎的剖面渲染委托给父布局?

时间:2019-06-21 23:30:11

标签: asp.net asp.net-core razor asp.net-core-2.0 asp.net-core-2.2

我有一个项目是在Asp.Net Core 2.2框架的顶部编写的,并利用Razor模板引擎生成视图。

我的布局是“祖父” _Layout.cshtml

<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="author" content="CrestApps.com">
    <meta name="description" content="@ViewData["description"]">
    <meta name="keywords" content="@ViewData["keywords"]">
    <title></title>
    <partial name="_Styles" />
    @RenderSection("Styles", required: false)
</head>
<body>
    <partial name="_Header" />
    <partial name="_CookieConsentPartial" />

    <main role="main">
        @RenderBody()
    </main>

    <partial name="_Footer" />
    <partial name="_Scripts" />

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

这是我的第二个布局_SecondLayout.cshtml看起来像这样,它继承了我的_Layout.chtml,如下面的代码所示

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

@RenderSection("Styles", required: false)
@RenderSection("Introduction", required: false)

<div class="container-fluid body-content ">
    @RenderBody()
</div>

@RenderSection("Scripts", required: false)

然后我的视图将如下所示

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

@*.... Some code ....*@
@section scripts {
   // Some JS Code
}

以上代码将在@section scripts布局中插入_SecondLayout。我希望将其注入_Layout.cshtml指示将JS代码保留在页面最底部的位置,并在加载所有其他资源后也加载脚本。

我如何指示_SecondLayout@RenderSection()部分的渲染委托给上层?

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,请替换 _SecondLayout.cshtml

的最后一行
    @RenderSection("Scripts", required: false)

使用

    @section Scripts {
      @RenderSection("Scripts", required: false)
    }