asp.net – How2:在HttpModule中挂钩的事件,用于将js链接放入he
发布时间:2020-12-16 00:11:50 所属栏目:asp.Net 来源:网络整理
导读:我想让HttpModule从一些简单的配置数据中注入javascripts,css链接到HEAD元素.我不确定应该挂哪个事件? 我可以使用 – context.PreRequestHandlerExecute用于动态更改母版页 – 用于SEO优化的Context.BeginRequest 在HTTPModule Event Execution Order?有一
我想让HttpModule从一些简单的配置数据中注入javascripts,css链接到HEAD元素.我不确定应该挂哪个事件?
我可以使用 在HTTPModule Event Execution Order?有一些帮助 谢谢你的提示.干杯,X. 解决方法
这是我在没有HttpModule的情况下实现你正在做的事情的方法.我不喜欢httpmodule的想法,因为如果我忘记注册它并且它没有运行,我的应用程序将无法工作,这将是一个非常明显的错误.该页面绝对需要包含JS,因此我决定将其放在项目的基本Page类中.
我在几年前实现了,并希望能够包含更多脚本,它支持css,元标记等….我忘了为什么我使用Page.Header.Controls.Add而不仅仅是Page.ClientScript.RegisterClientScriptInclude但是有一个原因. using System; using System.Collections.Generic; using System.Web; using System.Web.UI; namespace YourNamespace { public class HeaderIncludesManager { private List<string> m_IncludedFiles = new List<string>(); public void IncludeScript(string s) { IncludeScript(s,null); } public bool IsIncluded(string file) { return (m_IncludedFiles.Find(s => s.Equals(file,StringComparison.InvariantCultureIgnoreCase)) != null); } public void IncludeScript(string script,string condition) { Page page = HttpContext.Current.CurrentHandler as Page; if (!IsIncluded(script) || page == null) return; string scriptFile = string.Format("/{0}/{1}?v={2}",MyConfig.JSDir,script,MyConfig.BuildNumber); if (page.Header != null) { string scriptTag = String.Format("<script language="javascript" type="text/javascript" src="{0}"></script>n",scriptFile); if (!String.IsNullOrEmpty(condition)) scriptTag = String.Format("<!--[{0}]><script language="javascript" type="text/javascript" src="{1}"></script><![endif]-->n",condition,scriptFile); page.Header.Controls.Add(new LiteralControl(scriptTag)); m_IncludedFiles.Add(script); } else if (!page.ClientScript.IsClientScriptIncludeRegistered(GetType(),scriptFile)) { page.ClientScript.RegisterClientScriptInclude(GetType(),scriptFile,scriptFile); m_IncludedFiles.Add(script); } } public void IncludeCss(string css) { Page page = HttpContext.Current.CurrentHandler as Page; if (!IsIncluded(css) || page == null) return; string cssfile = string.Format("/{0}/{1}?v={2}",MyConfig.CssDir,css,MyConfig.BuildNumber); if (page.Header != null) { ((Page)HttpContext.Current.CurrentHandler).Header.Controls.Add(new LiteralControl(String.Format("<link href="{0}" rel="stylesheet" type="text/css" />n",cssfile))); m_IncludedFiles.Add(css); } } public void IncludeJQuery() { IncludeScript("jquery-1.2.3.min.js"); } public void IncludeJQueryUI() { IncludeJQuery(); IncludeScript("jquery.ui.1.0.min.js"); IncludeCss("jquery-theme.css"); } public void IncludeFlotScripts() { IncludeJQuery(); IncludeScript("flot/jquery.flot.js"); IncludeScript("flot/excanvas.pack.js","if IE"); } } public class MyPage : Page { public HeaderIncludesManager HeaderIncludes = new HeaderIncludesManager(); } public class MyControl : UserControl { public new MyPage Page { get { return (MyPage)base.Page; } } } public class SomeControlThatNeedsScripts : MyControl { protected override void OnLoad(EventArgs e) { Page.HeaderIncludes.IncludeJQueryUI(); base.OnLoad(e); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-3 – 带有HTML.ActionLink的ASP.NET MVC Razor
- asp.net-mvc – 我的MVC 5 Identity 2项目中没有Applicatio
- asp.net-mvc – 使用partialview时,HttpPostedFileBase始终
- asp.net-mvc – BeginRenderLink Sitecore Glass Mapper
- asp.net-mvc – AsyncController如何避免使用ASP.NET工作线
- 使用ASP.NET MVC和AJAX进行实时搜索
- asp.net-mvc – 在空项目中缺少类型Mono.Web.Util.RoleMana
- asp.net-mvc-4 – 在常规MVC项目中使用breeze而不是spa
- asp.net读取磁盘文件、删除实例代码
- asp.net-mvc – 如何在DB实体的子模型上使用自定义验证属性
推荐文章
站长推荐
- asp.net-mvc-2 – 关于nginx / mono 2.8的ASP.Ne
- asp.net-mvc – 测试ASP.NET MVC 2中的模型绑定
- asp-classic – 从Classic ASP执行存储过程
- asp.net-mvc – ASP MVC:为什么我的视图中看不到
- asp.net – Asp Button悬停和CSS
- 在ASP.NET中动态设置元素属性的值
- asp.net-mvc-3 – 处理DbContext后的问题
- asp.net – 在打开silverlight项目之前,您需要安
- asp.net-mvc – MVC 3 – 脚手架下拉列表
- asp.net-mvc – Request.GetOwinContext在单元测
热点阅读