Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

一个按钮被点击之后背后的故事(1)

$
0
0

服务器按钮点击背后的故事

首先我新建一个窗体,拖上一个服务器按钮然后在Page_Load事件打上这么一段话

        Response.Write(this.GetType().Assembly.Location);
       输出C:\Users\pc1\AppData\Local\Temp\Temporary ASP.NET Files\website\b68fbf31\a98b13a6\App_Web_lps21nlu.dll

找到这个dll拖入反编译器  

在这里之前我觉得我有必要简单介绍一下页面生命周期

当然我说的非常简单,想深入一下的朋友们可以百度一下 当客户端向服务器提交请求的时候服务器会自动new一个页面对象 然后生成控件树,并执行ProcessRequest方法执行生命周期 而按钮点击 可以理解为回发,当用户点击按钮的时候会向服务器post。具体怎么执行的我们往下看。

  这里我直接进入ProcessRequestMain里说 页面执行ProcessRequest最终执行的就是这个方法

往下找我们会找到这么个方法。

这个方法就是服务器控件点击的核心方法我们打开msdn搜下这个方法的含义

这句话的意思就是处理按钮点击的事件 点击按钮的时候在内部会调用这个方法。


再注意

页面回发的时候执行的也就是 可以简单的理解就是点击服务器按钮执行的(虽然这么说不太恰当)

  点进去我们发现

页面先调用this的这个方法 而我们发现这里的不会是this还是control的这个字段都是IPostBackEventHandler类型

也就是我们再点进去这个方法会发现

很明显最终调用是这个方法,也就是说控件的这个属性必须有RaisePostBackEvent(eventArgument);可是控件这个属性本身是没有这个方法的。也就是说Control在执行自己的生命周期动态给这个接口实现了相应的类。我们点进去这个属性 囧好像不能添图片那我们下期再说吧


 

作者:qzyf1992 发表于2013-12-3 0:15:08 原文链接
阅读:176 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>