惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 叶小钗
J
Java Code Geeks
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
阮一峰的网络日志
阮一峰的网络日志
爱范儿
爱范儿
量子位
N
Netflix TechBlog - Medium
博客园 - 聂微东
博客园 - Franky
aimingoo的专栏
aimingoo的专栏
The Cloudflare Blog
T
The Blog of Author Tim Ferriss
MyScale Blog
MyScale Blog
Google DeepMind News
Google DeepMind News
小众软件
小众软件
博客园 - 三生石上(FineUI控件)
C
Check Point Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
B
Blog
Engineering at Meta
Engineering at Meta
Microsoft Azure Blog
Microsoft Azure Blog
博客园_首页
H
Hackread – Cybersecurity News, Data Breaches, AI and More
腾讯CDC

博客园 - 灰太狼2号

用Nginx+Lua+Redis给百度鹰眼API服务搭建缓存服务中间件(记录过程) 开源.net微博组建维护团队 封装SQL2005数据库操作的Framework [转]Team Foundation Server 2008 單一伺服器簡易安裝說明 (Win2003+SQL2005+TFS2008) CHFMake代码生成器Beta版下载 Huntor中国CRM评估报告连载(二) Huntor中国CRM评估报告连载(一) 汉拓中国CRM评估报告简介 子曾经曰过:先有司,赦小过,举贤才 山寨版Windows.Forms用户控件 山寨版WCF 通过SQL语句生成日历表格 互联网公司如何有效执行流程的心得 自定义方法的C#代码生成器 [导入].Net CLR Hosting原理及实践 [导入]CLR引擎初始化分析 [导入]CLR探索系列:Server and Workstation Garbage Collection探索(垃圾回收系列) [导入]CLR探索系列:GC 中的Card table和Brick Table(垃圾回收系列) [导入]CLR探索系列:GC Heap架构及其实现(垃圾回收系列)
浅谈WebControl中的ScriptManager与ClientScriptManager的区...
灰太狼2号 · 2008-08-26 · via 博客园 - 灰太狼2号

在asp.net中经常要写些特殊的WebControl,并应用到不同的场合,偶然发现将自己写的控件放置到ajax的UpdatePanel中就出错。

经过不断的调试和翻阅msdn,原来是正常使用Page刷新时可以页面向客户端注册脚本块,而在UpdatePanel刷新时不能注册它以外的内容,所以在updatePanel中的控件没有将js资源文件注册到客户端。

于是就产生了ScriptManager与ClientScript的区别

  1. System.Web.UI.ScriptManager

          为 Web 和应用程序服务管理 ASP.NET AJAX 脚本库和脚本文件、部分页面呈现以及客户端代理类生成。

          向客户端注册资源文件的方法:RegisterClientScriptResource

          每次发生回发时都向 System.Web.UI.ScriptManager 控件注册嵌入程序集中的客户端脚本文件。

          向客户端注册启动脚本块的方法:RegisterStartupScript

          为每个异步回发向 System.Web.UI.ScriptManager 控件注册一个启动脚本块,并将该脚本块添加到页面中。

   2.   System.Web.UI.Control.Page.ClientScript (返回一个System.Web.UI.ClientScriptManager

          获取用于管理脚本、注册脚本和向页添加脚本的 System.Web.UI.ClientScriptManager 对象

          向客户端注册资源文件的方法:RegisterClientScriptInclude

          使用类型、键和 URL 向 System.Web.UI.Page 对象注册客户端脚本包含。

          向客户端注册启动脚本块的方法:RegisterStartupScript

          使用类型、键、脚本文本和指示是否添加脚本标记的布尔值向 System.Web.UI.Page 对象注册启动脚本。          

通过以上的定义,就会发现ScriptManager适用在特殊的场合,那么我们在控件中如何来进行区分应该使用哪一个呢?其实可以通过寻找控件的parent,判断是否有updatepanel,如果有就用ScriptManager;没有的话当然用ClientScript,避免每次postback操作时控件都要进行资源文件的注册。

贴出代码如下:(弹出多选的CheckBox功能控件)

1.CS文件

Code

2.资源文件

Code