asp.net-mvc - 如何从编辑器模板添加 JavaScript 或 css 引用

标签 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")

这添加了脚本和链接标签,但是每次使用编辑器模板时都会渲染标签一次,并且还会直接内联渲染它们,所以在我的例子中,这是在 jQuery 加载到正文底部之前。
@section Scripts{ <script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/jqueryui")"></script> }

这与我在 _Layout.cshtml 中包含捆绑包的方式相匹配,但这显然不适用于编辑器模板。根本没有渲染任何东西,即使它渲染了,我认为它仍然会导致对 JavaScript 文件的多次引用(每次调用编辑器模板时 1 次)

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

最佳答案

实现此目的的一种方法可能是使用当前请求上下文请求所需的 javascript 文件。例如,在编辑器模板中,您可以编写类似这样的内容来请求 javascript 包含

HttpContext.Current.Items["Required.Script"] = "~/myeditortemplate.js";

然后在渲染任何可选脚本部分之前的布局中,您可以通过查看当前上下文来渲染所需的脚本
Scripts.Render(HttpContext.Current.Items["Required.Script"].ToString())

Scripts 在 MVC 中使用脚本包的地方。或者,您可以简单地将脚本标记点 src 发送到所需的脚本。

关于asp.net-mvc - 如何从编辑器模板添加 JavaScript 或 css 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29955583/

相关文章:

javascript - ASP.NET MVC 3 - ajax调用后,重定向到新页面或生成页面刷新

asp.net-mvc - 什么是 Request.InputStream 以及何时使用它?

asp.net-mvc - 如何从命令行发布 ASP.NET MVC 项目?

c# - 在部分 View 中呈现的模型属性值不正确

c# - Azure AD graph api 在本地工作但在部署时失败

c# - 如何将 Json 参数绑定(bind)到 ASP.NET 中的 Web Api 参数?

javascript - 单击 span 标记内的图像时使用 jQuery toggleClass()

performance - 调试慢速 Razor View

javascript - .Net MVC 3 Telerik DropDownList 未触发 OnChange 事件

jquery - 如何将 ViewModel bool 值传递给 jquery 函数?