文件名称:
一个ASP.NET的JS管理方案,防止重复引用JS问题
开发工具:
文件大小: 10kb
下载次数: 0
上传时间: 2013-07-07
详细说明: 场景:在自定义控件、用户控件、页面、后台代码都会有引用JS的可能,这就会出现混乱或者重复引用的可能。 一个自定义控件,用于在ASPX页面中注册JS: public class Script : Control { #region 属性 private string m_Src; /// /// 脚本文件路径 /// public string Src { get { return m_Src; } set { m_Src = value; } } #endregion /// /// 在控件Init的时候将JS路径添加到HttpContext.Current.Items["IncludedJavaScript"]中。 /// /// protected override void OnInit(EventArgs e) { base.OnInit(e); if (!string.IsNullOrEmpty(Src)) { string src = ResolveUrl(Src); List includedJs = HttpContext.Current.Items["IncludedJavaScript"] as List; if (null == includedJs) { includedJs = new List(); HttpContext.Current.Items["IncludedJavaScript"] = includedJs; } if (!includedJs.Contains(src)) { includedJs.Add(src); } } } } 一个静态类,用于管理JS和在后台代码(cs文件)中注册JS: /// /// Javascript管理器 /// public static class JavaScriptManager { /// /// 包含JS引用。 /// /// public static void Include(params string[] filePaths) { HttpContext context = HttpContext.Current; if (null == context) { throw new Exception("HttpContext为空。"); } System.Web.UI.Page p = context.CurrentHandler as System.Web.UI.Page; if (null == p) { throw new Exception("HttpContext.CurrentHandler不是Page。"); } IList jss = GetIncludedJavaScript(); string resolveUrl; foreach (string filePath in filePaths) { resolveUrl=p.ResolveUrl(filePath); if (!jss.Contains(resolveUrl)) { jss.Add(p.ResolveUrl(resolveUrl)); } } } /// /// 获取已经包含的JS列表 /// /// public static IList GetIncludedJavaScript() { HttpContext context = HttpContext.Current; if (null == context) { throw new Exception("HttpContext为空。"); } IList jss = HttpContext.Current.Items["IncludedJavaScript"] as IList; if (null == jss) { jss = new List(); HttpContext.Current.Items["IncludedJavaScript"] = jss; } return jss; } } 然后写一个基类页面,所有的页面都要继承自这个基类页: public class BasePage : System.Web.UI.Page { public BasePage() { } #region 注册/管理JS引用 /// /// 将引用的JS添加到Page.Head中。 /// private void InitJS() { IList includedJs = JavaScriptManager.JavaScriptManager.GetIncludedJavaScript(); foreach (string jsFilePath in includedJs) { var script = new HtmlGenericControl("script"); script.Attributes["type"] = "text/javascript"; script.Attributes["src"] = jsFilePath; Page.Header.Controls.Add(script); } } /// /// 在呈现之前注册JS /// /// protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); InitJS(); } #endregion } 上面是在OnPreRender中将JS注册到Page.Head中的,所以如果在自定义控件中注册JS引用,请在OnPreRender之前引用。 在ASPX页面中注册JS: 在CS页面中注册JS: public partial class _Default : BasePage { protected void Page_Load(object sender, EventArgs e) { JavaScriptManager.JavaScriptManager.Include("~/JS/cs.js", "~/JS/cs.js", "~/JS/cs.js2", "~/JS/cs.js"); } } ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.