zoukankan      html  css  js  c++  java
  • 浅谈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
  • 相关阅读:
    Springboot配置多数据源Rabbitmq
    SpringBoot 搭建 Rabbitmq
    SpringBoot 成Rabbitmq的疑惑记录
    Docker安装Redis关于Mounts denied解决
    使用Preferences写入注册表
    RSA解密报错 javax.crypto.BadPaddingException: Decryption error
    星座和生肖转化
    bio与nio
    跳表
    springboot+dubbo+zookeeper
  • 原文地址:https://www.cnblogs.com/chf/p/1276556.html
Copyright © 2011-2022 走看看