浅谈WebControl中的ScriptManager与ClientScriptManager的区别(附上一个弹出多选的控件源代码)

在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
原文地址:https://www.cnblogs.com/chf/p/1276556.html