asp.net - 从用户控件将代码注入(inject)母版页/html 头

标签 asp.net

我正在努力解决我认为应该是标准做法的事情。我有许多使用一些 JQuery 插件的用户控件。我真的不想从我的主主页链接到额外的 CSS 和 JS 文件,因为这会在用户第一次访问网站时导致额外的负载(诚然,这只是一次),所以我只是把它们链接到用户控件的顶部。然后我查看了我的源 HTML,不好看!对于在页面上重复多次的控件来说更糟。

所以我在想有没有办法在用户控件需要它们时将它们注入(inject)页面的头部。就此而言,有没有办法对 JS 内容的页脚进行处理?

最佳答案

要在 ASP.NET 中动态注册脚本(并确保合并重复项),您可以调用:

Page.ClientScript.RegisterClientScriptInclude(
    "mykey", "~/scripts/jquery-1.3.2.js");

并在 MSDN 上阅读有关此方法的完整详细信息.

要动态添加 CSS,您可以执行以下操作:
HtmlLink cssLink = new HtmlLink();
cssLink.Href = "path to CSS";
cssLink.Attributes["some attr1"] = "some value1";
cssLink.Attributes["some attr2"] = "some value2";
Page.Header.Controls.Add(cssLink);

这个注入(inject) CSS 的例子不会合并重复的条目。为避免重复,您必须自己跟踪重复项。您可以在 HttpContext.Items 中存储已注册的脚本列表。在其中粘贴一个 HashSet 来保存所有已注册脚本的列表,这样您就不会两次注册同一个 CSS 文件(这通常是无害的,但无论如何都要避免)。

关于asp.net - 从用户控件将代码注入(inject)母版页/html 头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2038631/

相关文章:

asp.net - HTML.ActionLink() 生成不正确的 URL

c# - ASP.NET 图表控件 - 3D Stacked Step pie

javascript - CssClass 属性的这个值是什么意思?

asp.net - 将焦点设置在由 javascript 发起的回发上

c# - 是否可以在同一个 AppDomain 上托管 WebMethods 和 ASP.NET 应用程序?

使用 CDN 和 HashContent(Cache Buster 或 Finger Print)的 ASP.NET 优化框架(JS 和 CSS 缩小和捆绑)

asp.net - linq 中的 switch 语句

c# - 比赛 : Storing an arbitrary number of fields

javascript - 如何在 javascript 中接收文件流并使用 AJAX 发布它?

javascript - 只有在 ajax 请求完全完成后才执行 js 函数