以前在ASP中,不存在事件处理,传统的处理方法是通过隐藏文本框来提交不同的参数进行区别用户的不同动作,或则用不同的URL查询字符串来区别。ASP.NET中出现了事件处理,让开发人员区分用户动作方便并简单了许多。

实际上,ASP.NET中区别用户动作引发的事件处理同样也是采用了传统方式,不过,MS将其封装了起来,让开发人员用起来更贴近于软件开发中的事件驱动方式。

在ASP.NET中,几乎每一个控件都带有多种事件,开发人员可以在后台通过编写事件捆绑和事件处理来完成不同的工作。并且,可以在传统方式中无法引发事件的控件中使用事件,如超链接、图片、纯文本。

ASP.NET中辨别用户动作关联事件的方法总体来看可以分成两种。

一、在只存在BUTTON按钮控件的情况下,ASP.NET辨别用户动作并关联事件不需要其他辅助方式。

ASP.NET将所有的BUTTON在生成HTML代码的时候都生成为SUBMIT的提交按钮,当多个提交按钮在同一个FORM内时,通过SUBMIT按钮提交的FORM集合中不会包含其他SUBMIT类型的提交按钮,这样,ASP.NET在预处理的前就将所有SUBMIT提交按钮记录下来,用户执行提交后ASP.NET挨个的检查FORM集合中的SUBMIT按钮,因为只可能存在一个SUBMIT,所以检查出的唯一的一个SUBMIT就是用户动作触发提交的按钮,然后再对应的执行这个按钮的后台事件处理。

二、在存在传统中并不能直接执行FORM提交的控件时。ASP.NET通过使用两个隐藏的文本表单控件来辨别用户执行的提交动作。

当在ASPX文件中使用了LINKBUTTON或则其他不是传统的SUBMIT提交按钮来执行后台事件处理的时候,ASP.NET生成的HTML代码中在FORM内的最前面会生成出两个隐藏的文本筐控件
<input type="hidden" name="__EVENTTARGET">
<input type="hidden" name="__EVENTARGUMENT">
并生成一段JAVASCRIPT代码
<script language="javascript">
<!--
 function __doPostBack(eventTarget, eventArgument) {
  var theform;
  if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) {
   theform = document.forms["Form1"];
  }
  else {
   theform = document.Form1;
  }
  theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
  theform.__EVENTARGUMENT.value = eventArgument;
  theform.submit();
 }
// -->
</script>

然后在每个加有事件处理的控件的事件属性中都加上了__doPostBack('控件ID','参数值')这个JAVASCRIPT方法,__doPostBack这个JAVASCRIPT处理方法的作用就是将调用这个方法的控件ID记录下来,如果是在模板类型的控件中还需要一些组合转换,然后记录执行参数。最后,将这两个值分别赋给在FORM内最前面的那两个隐藏文本筐中,最后,执行FORM的SUBMIT方法将页面提交。

页面提交后,ASP.NET会首先检查两个隐藏表单中的值,然后根据这两个值首先执行控件中的处理方法,然后控件内部的处理再将事件委托给页面的相关事件进行处理。

这样ASP.NET就完成了通过用户动作触发关联事件处理程序的过程。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/banmuhuangci/archive/2006/10/31/1358057.aspx

转载于:https://www.cnblogs.com/cxd4321/archive/2009/09/22/1571950.html

Asp.net页面事件引发后台程序处理原理【转】相关推荐

  1. ASP.NET 页面事件执行顺序 收藏

    ASP.NET 页面事件执行顺序 收藏 过程描述 下面是ASP.NET页面初始的过程: 1. Page_Init(); 2. Load ViewState; 3. Load Postback data ...

  2. ASP.NET页面事件详解

    ASP.NET页面事件详解 ASP.NET页面事件详解 1.Page_Init()事件 当页面初始化时发生此事件.可以利用Page_Init()将该事件与要在.NET页面上显示控件之前的运行的代码建立 ...

  3. 也谈ASP.NET页面事件

    接触.Net时间不久,有关页面事件的知识,跟大家分享一下. 一个ASP.NET页面在运行时将经历一个生命周期,在生命周期中将执行一系列处理步骤.这些步骤包括初始化.实例化控件.还原和维护状态.运行事件 ...

  4. ASP.NET页面事件:顺序与回传详解

    一.初始化 ·当页面被提交请求第一个方法永远是构造函数.您可以在构造函数里面初始一些自定义属性或对象,不过这时候因为页面还没有被完全初始化所以多少会有些限制.特别地,您需要使用HttpContext对 ...

  5. asp.net页面事件:顺序与回传

      [%=@title%] [%=@count%]票 [[%=@percent%]%] l 初始化 2 当页面被提交请求第一个方法永远是构造函数.您可以在构造函数里面初始一些自定义属性或对象,不过这时 ...

  6. ASP.NET 页面事件执行顺序

    2009-12-02 09:59:58|  分类: .C Sharp| |  标签: |字号大中小 订阅 在作完上图后,无意中看到网上类似的一篇文章,也非常精彩,转载在下面供大家参考.申明,以下内容为 ...

  7. 引用asp.net母版页后,母版页和内容页的页面事件执行顺序

    如下,经测试得到的执行步骤: 第01步.内容页的 Page_PreInit 第02步.母版页的 Page_Init 第03步.内容页的 Page_Init 第04步.内容页的 Page_InitCom ...

  8. HttpApplication事件ASP.NET页面周期

    学习吧少年........................... 修改中........... 当一次请求到达IIS 1.http.sys将请求发送到指定的应用程序池. 2.应用程序池再将请求交给池中 ...

  9. asp.net页面回传与js调用服务端事件、PostBack的原理详解(转)

    Asp.net中服务端控件事件是如何触发的 Asp.net 中在客户端触发服务器端事件分为两种情况: 一.   WebControls中的Button 和HtmlControls中的Type为subm ...

最新文章

  1. 自己实现Java RPC框架一:RMI
  2. AI 综述专栏 | 超长综述让你走近深度人脸识别
  3. LeetCode Search a 2D Matrix II
  4. 深层神经网络中的前向传播
  5. mongodb 导出到sqlserver_迁移sqlserver数据到MongoDb的方法
  6. 【转贴】pentaho4.5汉化攻略及汉化文件
  7. python表格写操作单元格合并
  8. 人的手臂的自由度的数目以及六自由度机械臂的限制
  9. Win7_64位使用32位Mysql配置Mysql Odbc
  10. linux笔记 第十七天 加密技术、openssl详解
  11. 数据转换服务-PDF转换技术
  12. 文献管理三剑客之noteexpress打不开 cannot find import; dll may be missing corrupt or worng
  13. 服务器p盘cpu占用率低,硬盘问题导致的CPU占用率100%解决实例
  14. Excel获取目标时间点/日期的方法
  15. .Net Framework 中设置Web Proxy 的方法
  16. 6.4.3 拓扑排序 番茄炒蛋工程
  17. 论文阅读:SCENE TRANSFORMER: A UNIFIED ARCHITECTUREFOR PREDICTING MULTIPLE AGENT TRAJECTORIES
  18. 在Windows7 系统上部署DNS服务器
  19. 做淘宝页面前的基础准备
  20. 系统日志及数据库日志

热门文章

  1. 6个步骤卸载wine
  2. 汽车电子专业知识篇(六)-DDS如何满足自动驾驶汽车中的应用?
  3. Python应用实战-用pandas实现数据预处理
  4. 机器学习从入门到精通150讲(一)-推荐系统经典模型Wide Deep(附部分代码)
  5. body curl 设置post_curl 命令详解
  6. ssm框架逻辑删除mysql_MybatisPlus--CRUD接口及主键增长策略、自动填充、乐观锁更新数据...
  7. java接口抽象方法_Java 接口 抽象类 抽象方法
  8. MyEclipse+JavaEE+jsp+sqlsever实现产品售后服务系统
  9. 微型计算机系统中的内部寄存,微机原理与接口技术习题集汇总.doc
  10. graph面板x轴模式包括哪些_发那科数控车床面板讲解