C#Razor页面-在布局中包含@section脚本(点网核心)

C#Razor页面-在布局中包含@section脚本(点网核心),razor,.net-core,razor-pages,Razor,.net Core,Razor Pages,假设从控制器/模型接收的动态脚本的@部分代码如下:(dotnet core v3) 当此@节不在_Layout.cshtml内,而是移动到调用_Layout.cshtml的父razor页面(例如Index.cshtml)时,它将被正确包含。然而,这意味着我必须为每一页@section这个脚本 如何包含“动态”Javascript脚本并使其可在所有使用\u Layout.cshtml的页面上重用?@Section块不用于版面页面,除非它是另一版面页面的子版面。节仅在查看页面中使用(收集)。 \u布

假设从
控制器/模型
接收的动态脚本的
@部分
代码如下:(dotnet core v3)

当此
@节
不在_Layout.cshtml内,而是移动到调用
_Layout.cshtml的父razor页面(例如Index.cshtml)时,它将被正确包含。然而,这意味着我必须为每一页
@section
这个脚本


如何包含“动态”Javascript脚本并使其可在所有使用
\u Layout.cshtml
的页面上重用?

@Section
块不用于版面页面,除非它是另一版面页面的子版面。节仅在查看页面中使用(收集)。
\u布局
中的任何
@脚本
部分将被忽略

因为这将被多个页面共享(重用),所以只需像普通的嵌入式脚本一样包含它。条件将确保它包括在内

因此,只需将条件块包含在
\u Layout.cshtml
(或布局文件)中,移除
@部分
标记
,并将其移近其他脚本

更新的
\u布局
页面:

    <footer class="border-top footer text-muted"></footer>

    @if(!string.IsNullOrEmpty(scriptHtml)){
         // This condition will ensure to correctly include when not empty
         <script type='text/javascript'>
              @Html.Raw(scriptHtml)
          </script>
          <script type='text/javascript' src='~/js/appcore/site.reuse.js'></script>
     }

    <script src="~/lib/jquery/dist/jquery.min.js"></script>
    <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
    <script src="~/js/site.js" asp-append-version="true"></script>

    @RenderSection("Scripts", required: false) 

@如果(!string.IsNullOrEmpty(scriptHtml)){
//此条件将确保在不为空时正确包含
@Html.Raw(脚本Html)
}
@RenderSection(“脚本”,必需:false)

注意:此
@RenderSection
将仅包括视图中的脚本。

@节
块不用于版面页面,除非它是另一版面页面的子版面。节仅在查看页面中使用(收集)。
\u布局
中的任何
@脚本
部分将被忽略

因为这将被多个页面共享(重用),所以只需像普通的嵌入式脚本一样包含它。条件将确保它包括在内

因此,只需将条件块包含在
\u Layout.cshtml
(或布局文件)中,移除
@部分
标记
,并将其移近其他脚本

更新的
\u布局
页面:

    <footer class="border-top footer text-muted"></footer>

    @if(!string.IsNullOrEmpty(scriptHtml)){
         // This condition will ensure to correctly include when not empty
         <script type='text/javascript'>
              @Html.Raw(scriptHtml)
          </script>
          <script type='text/javascript' src='~/js/appcore/site.reuse.js'></script>
     }

    <script src="~/lib/jquery/dist/jquery.min.js"></script>
    <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
    <script src="~/js/site.js" asp-append-version="true"></script>

    @RenderSection("Scripts", required: false) 

@如果(!string.IsNullOrEmpty(scriptHtml)){
//此条件将确保在不为空时正确包含
@Html.Raw(脚本Html)
}
@RenderSection(“脚本”,必需:false)

注意:此
@RenderSection
将只包括视图中的脚本。

因此,您的意思是说我应该像已经做的那样将其添加到每个
父页面中(索引、关于等)?这是不幸的:(还有,有没有办法为“_layout”创建一个“子版面”,以便我可以用其他方式将其包含在内?没有-如果它出现在所有使用该版面的页面中,请将其放在版面中。更新了我的回答,以澄清我想我知道你想说什么。我不能按我想要的方式使用部分,但因为它是可重用的,所以我可以暗示将其作为(正常的)非节脚本嵌入。谢谢-希望我能在布局中“捆绑一个节”脚本节。谢谢帮助-我现在稍微改变了我的想法,但通常它现在可以工作了。所以,你的意思是说我应该像已经做的那样(索引、关于等)将其添加到每个
父页面中这是不幸的:(还有,有没有办法为“_layout”创建一个“子版面”,以便我可以用其他方式将其包含在内?没有-如果它出现在所有使用该版面的页面中,请将其放在版面中。更新了我的回答,以澄清我想我知道你想说什么。我不能按我想要的方式使用部分,但因为它是可重用的,所以我可以暗示将其作为(普通)非节脚本嵌入。谢谢-希望我可以在布局中“捆绑一个节”脚本节。谢谢帮助-我现在稍微改变了我的想法,但通常它现在可以工作了。
    <footer class="border-top footer text-muted"></footer>

    @if(!string.IsNullOrEmpty(scriptHtml)){
         // This condition will ensure to correctly include when not empty
         <script type='text/javascript'>
              @Html.Raw(scriptHtml)
          </script>
          <script type='text/javascript' src='~/js/appcore/site.reuse.js'></script>
     }

    <script src="~/lib/jquery/dist/jquery.min.js"></script>
    <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
    <script src="~/js/site.js" asp-append-version="true"></script>

    @RenderSection("Scripts", required: false)