如何从编辑器模板添加JavaScript或css引用

ctb*_*ctb 5 asp.net-mvc razor

假设我们的应用程序不会使用jqueryui,除了一个特定的编辑器模板.如果我想避免将jqueryui放到每个页面上(即我不想将它包含在我的_Layout.cshtml中默认加载的包中),我怎么能让编辑器模板包含jqueryui.js和jqueryui.css文件对我来说不会导致对这些文件的多次引用,并将引用放在标题或我的身体的末尾而不是内联?

这是我在我的编辑模板已经试过没有似乎工作:

@System.Web.Optimization.Scripts.Render("~/bundles/jqueryui")
@System.Web.Optimization.Styles.Render("~/Content/jqueryuistyles")
Run Code Online (Sandbox Code Playgroud)

这添加了脚本和链接标记,但是每次使用编辑器模板时它都会呈现一次标记,并且它也会直接呈现它们,所以在我的情况下,这是在jQuery加载到正文的底部之前.

@section Scripts{ <script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/jqueryui")"></script> }
Run Code Online (Sandbox Code Playgroud)

这与我在_Layout.cshtml中包含bundle的方式相匹配,但这显然不适用于编辑器模板.什么都没有呈现,即使它确实如此,我认为它仍然会导致对JavaScript文件的多次引用(每次调用编辑器模板时为1)

似乎应该有一种方法让编辑器模板触发包含可以绑定到捆绑包或至少@section系统的JavaScript或css文件.有人知道怎么做吗?

Aut*_*ion -2

在 _Layout.cshtml 页面中,您可以有一个可选的 JQuery UI 部分

@RenderSection("JQueryUIOptional", required: false)
Run Code Online (Sandbox Code Playgroud)

然后,当您的视图被调用时,使用以下命令渲染该部分:

@section JQueryUIOptional
{
   <script type="text/javascript" src="@Url.Content("~/Scripts/path-To-Jquery-UI.js")"></script>
   <link href="@Url.Content("~/Content/styles/path-to-JqueryUIstyles.css")" rel="stylesheet" type="text/css" />
}
Run Code Online (Sandbox Code Playgroud)