您的位置:首页 > 其它

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

2013-12-03 00:15 309 查看
服务器按钮点击背后的故事

首先我新建一个窗体,拖上一个服务器按钮然后在Page_Load事件打上这么一段话
Response.Write(this.GetType().Assembly.Location);
输出C:\Users\pc1\AppData\Local\Temp\TemporaryASP.NETFiles\website\b68fbf31\a98b13a6\App_Web_lps21nlu.dll

找到这个dll拖入反编译器



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

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

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



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



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



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

再注意



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

点进去我们发现


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

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


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


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐