服务器按钮点击背后的故事
首先我新建一个窗体,拖上一个服务器按钮然后在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 查看评论