asp.net – 有没有更好的方法将ClientID转换为外部JS文件?
发布时间:2020-12-16 03:46:29 所属栏目:asp.Net 来源:网络整理
导读:我知道之前已经问过这个问题,但是我发现了一种不同的方法来获取外部JS文件中控件的引用,但我不确定这会如何在整体速度方面下降. 我的代码是 public static void GenerateClientIDs(Page page,params WebControl[] controls) { StringBuilder script = new St
我知道之前已经问过这个问题,但是我发现了一种不同的方法来获取外部JS文件中控件的引用,但我不确定这会如何在整体速度方面下降.
我的代码是 public static void GenerateClientIDs(Page page,params WebControl[] controls) { StringBuilder script = new StringBuilder(); script.AppendLine("<script type="text/javascript">"); foreach (WebControl c in controls) { script.AppendLine(String.Format("var {0} = '#{1}';",c.ID,c.ClientID)); } script.AppendLine("</script>"); if (!page.ClientScript.IsClientScriptBlockRegistered("Vars")) { page.ClientScript.RegisterClientScriptBlock(page.GetType(),"Vars",script.ToString()); } } 这是我可以在我的JS文件中引用aspx页面的id. 任何人都可以看到以这种方式做事的任何缺点吗?我刚开始使用外部JS文件.在将所有内容写入UserControl本身之前. 解决方法
好吧,该方法只能在每个页面中使用一次,因此如果您从用户控件调用它,则意味着您永远不能将其中两个用户控件放在同一页面上.
您可以将控件引用存储在列表中直到PreRender事件,然后将它们全部放在页眉中的脚本标记中.这样,您可以多次调用该方法,并将所有客户端ID放在同一个脚本标记中. 就像是: private const string _key = "ClientIDs"; public static void GenerateClientIDs(params WebControl[] controls) { Page page = HttpContext.Current.Handler As Page; List<WebControl> items = HttpContext.Current.Items[_key] as List<WebControl>; if (items == null) { page.PreRender += RenderClientIDs; items = new List<WebControl>(); } items.AddRange(controls); HttpContext.Current.Items[_key] = items; } private static void RenderClientIDs() { Page page = HttpContext.Current.Handler As Page; List<WebControl> items = HttpContext.Current.Items[_key] as List<WebControl>; StringBuilder script = new StringBuilder(); script.AppendLine("<script type="text/javascript">"); foreach (WebControl c in items) { script.AppendLine(String.Format("var {0} = '#{1}';",c.ClientID)); } script.AppendLine("</script>"); page.Head.Controls.Add(new LiteralControl(script)); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 模型绑定和GET请求?
- asp.net-mvc – 范围注释在无和100之间?
- asp-classic – 与SQL Server Compact Edition 4.0的Ado连接
- asp.net-mvc – 确保每个控制器方法都有一个ValidateAntiFo
- asp.net-mvc – 在MVC 3 RC中实现TransferResult – 不起作
- asp.net – 如何在IIS7中为HttpHandler注册多个路径?
- asp.net-membership – 用于创建.Net成员资格提供者用户的S
- asp.net-core – AspNetCore Abstractions无法加载
- asp.net-mvc – 如何在发布期间跳过文件夹上的删除?
- msbuild – 如何为ASP.NET 5项目设置TeamCity构建
推荐文章
站长推荐
- 自签名ASP.NET Web API 2 REST服务的令牌身份验证
- Asp.Net Core 进阶(一) —— 读取appsettings.
- asp.net-mvc – UIHint属性在MVC中
- asp.net-mvc – RazorPDF将pdf文件保存到MVC4中的
- asp.net-mvc – 具有不确定数量项的动态表单
- asp.net-mvc – 配置Magical Unicorn Mvc错误工具
- asp.net-mvc – Azure持续集成
- .net – 输入键触发错误提交按钮
- asp.net-core – 在ASP.NET vNext过滤器中获取注
- asp.net – 如何限制文本框中允许的字符数?
热点阅读