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)