如大家要转载,请保留本人的版权:
/*
*Description:asp.NET自定义服务器控件内部细节系列教程
*Auther:崇崇-天真的好蓝
*MSN:chongchong2008@msn.com
*Dates:2007-05-20
*Copyright:ChongChong2008 YiChang HuBei China
*/
五 服务器控件的回传架构

参与回传架构主要有两个重要的接口IPostBackEventHandler和IPostBackDataHandler接口
   IPostBackEventHandler接口使控件引发一个标志着已经发生回传的事件。
   IPostBackDataHandler接口使控件检索已被传送的表单数据,从而相应的更新状态,然后在服务器端引发事件以标志其状态变化。

1。IPostBackEventHandler
      1.1 把回传事件映射到服务器端事件
          public interface IPostBackEventHandler
          {
      void RaisePostBackEvent(string eventArguments);
          }
          eventArguments参数是为了如果控件生成了能够引起回传事件的多个HTML标签,那么可以利用这个参数来识别而引发不同的事件。

1.2 生成回传的客户端脚本
          如果想利用一个超级链接来引起回传,同样需要先实现IPostBackEventHandler接口,然后需要利用下面的方法:
          Page.GetPostBackClientHyperlink(object ,string);

GetPostBackClientHyperlink主要实现两个功能:
             第一:返回一个字符串"javascript:__doPostBack('youControlUniqueID','')",该字符串包括一个由页面框架生成的到__doPostBack javascript函数的调用。
             第二:告知页面生成两个隐藏域(__EVENTTARGET和__EVENTARGUMENT),以及一个引起回传(____doPostBack)的javascript函数.

2。IPostBackDataHandler
       为了参与数据回传处理必须实现IPostBackDataHandler接口,它右两个方法
       public interface IPostBackDataHandler
       {
          bool LoadPostDate(string postDateKey , NameValueCollection postCollection);
          void RaisePostDateChangedEvent();
       }

在加载回传数据阶段,页面查看名/值表单传送集中的每一个名字,并且寻找控件树中与名字匹配的UniqueID控件。如果页面找到这样一个控件,并且这个控件实现IPostBackDataHandler,则页面在这个控件上调用LoadPostData.

LoadPostData方法有两个参数,一个包含回传元素名称的字符串和一个包含传送表单数据的名/值集的System.Collections.Specialized.NameValueCollection实例。控件可以用回传数据来更新它的状态。
       如果控件状态在回传时改变,而且希望引发事件来标记此变化,那么必须从LoadPostData方法中返回True值。
       当控件的LoadPostData方法返回True时,页面会调用此控件的RaisePostDateChangedEvent方法。

转载于:https://www.cnblogs.com/amboyna/articles/884748.html

asp.NET自定义服务器控件内部细节系列教程五相关推荐

  1. asp.NET自定义服务器控件内部细节系列教程四

    如大家要转载,请保留本人的版权: /* *Description:asp.NET自定义服务器控件内部细节系列教程 *Auther:崇崇-天真的好蓝 *MSN:chongchong2008@msn.co ...

  2. asp.NET自定义服务器控件内部细节系列教程一

    如大家要转载,请保留本人的版权: /* *Description:asp.NET自定义服务器控件内部细节系列教程 *Auther:崇崇-天真的好蓝 *MSN:chongchong2008@msn.co ...

  3. ASP .NET Core Web Razor Pages系列教程五:更新Razor Pages页面

    系列文章目录:系列教程:使用ASP.NET Core创建Razor Pages Web应用程序 - zhangpeterx的博客 系列教程代码的GitHub地址:ASP .Net Core Razor ...

  4. ASP .NET Core Web Razor Pages系列教程四:使用数据库进行交互 entity-framework(MySQL/MariaDB 版)

    系列文章目录:系列教程:使用ASP.NET Core创建Razor Pages Web应用程序 - zhangpeterx的博客 系列教程代码的GitHub地址:ASP .Net Core Razor ...

  5. ASP.NET Core Web Razor Pages系列教程六:添加搜索功能

    系列文章目录:系列教程:使用ASP.NET Core创建Razor Pages Web应用程序 - zhangpeterx的博客 系列教程代码的GitHub地址:ASP .Net Core Razor ...

  6. ASP .NET Core Web Razor Pages系列教程四:使用数据库进行交互(SqlServer 版)

    系列文章目录:系列教程:使用ASP.NET Core创建Razor Pages Web应用程序 - zhangpeterx的博客 上一个教程:ASP .NET Core 系列教程三:自动生成Razor ...

  7. ASP.NET Core Web Razor Pages系列教程:使用ASP.NET Core创建Razor Pages Web应用程序

    ASP .Net Core Razor Pages MySQL Tutorial 本系列教程翻译自微软官方教程,官方教程地址:Tutorial: Create a Razor Pages web ap ...

  8. ASP.NET Core 和 EF Core系列教程——CRUD

    ASP.NET Core 和 EF Core系列教程--CRUD (2 / 10) CRUD 为创建.读取.更新.删除的英文首字母的缩写 作者:Tom Dykstra和Rick Anderson Co ...

  9. ASP.NET Core Web Razor Pages系列教程八: 添加验证

    系列文章目录:系列教程:使用ASP.NET Core创建Razor Pages Web应用程序 - zhangpeterx的博客 系列教程代码的GitHub地址:ASP .Net Core Razor ...

最新文章

  1. 提升用户体验的必杀器——A/B实验统计方法解密
  2. 复制初始化和直接初始化
  3. Firefox 检测到该服务器正在将此地址的请求循环重定向。     此问题可能是因为禁用或拒绝 Cookie 导致。...
  4. 杂志订阅管理系统c++_有哪些值得收藏的室内设计杂志?
  5. C语言中32个关键字详解
  6. java socket.close_java – Socket.close()在Socket.connect()期间无效
  7. 智能语音翻译APP——腾讯翻译君
  8. 双线服务器托管的三大优势
  9. 硬件设备计算存储及数据交互杂谈
  10. 全网最细------爬取4k高清大图
  11. 值得珍藏的免费观影网站
  12. vue实现随机生成分享海报(内容动态)
  13. 游戏后台生成唯一ID
  14. 自动化测试效率提升方案
  15. 为什么要把DAO作为接口 再用impl类来实现?
  16. 元宇宙:从数字孪生到数字共生
  17. MPB:山大倪金凤组-培菌白蚁肠道簇虫分离与分子鉴定的方法
  18. 内置超声波振动筛换能器振子设计
  19. Android Gradle:依赖下载
  20. 通俗易懂!看完你就是半个天线专家了

热门文章

  1. VC6.0 如何改变对话框背景色
  2. android开机启动c程序,如何让A20,android开机自动启动C程序【转】
  3. admui 能再php上用吗,Javascript 方法
  4. Maven Filter
  5. 以太网的MAC帧(二)
  6. 上高职业技术学校计算机学几年,上高职业技术学校2021年有哪些专业
  7. Python 语法速览与实战清单
  8. Unencrypted connection refused. Goodbye. Connection closed by foreign host.
  9. 数据科学家最常用的10种算法
  10. who,cut,diff,which,whereis,locate,updatedb 命令的使用