ASP.NET页面继承关系
用过ASP.NET(以下简称ASP)的都知道ASP以一种Code Behind的方式给咱展现了一种类似Winform的开发模型,同样也是以“事件触发”的方式进行各种请求处理。其中AutoPostback,Viewstate等等东西可以另起一篇文章了,相信有过ASP开发经历的人对其都是一点都不陌生了,按下不表。这篇文章主要想讲述一个不太明显但一直都在接触的东西。就是前台页面和后台CS文件之间是一种什么对应关系,为什么后台定义的方法,前台控件的事件可以直接注册这个方法?可能很多人都已经考虑过这个问题,也可能觉得这问题没啥意义,没关系,就是个玩儿~。 注意,ASP的控件模型和一个请求的生命周期比较复杂,如果深入去讲,我水平也有限,不说能不能深入到让人过瘾,光去证明结论对不对就让人够呛了,所以我在这里假定您水平已经很不错了,就不会多贴多余的代码了,也不会半路绕道去解释别的概念了。节约大家的时间和文章的篇幅。这儿给您先行道歉! 先看代码:
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ }
protected void Button1_Click(object sender, EventArgs e)
{
}
}
我们祭出aspnet_compiler,它是asp的编译工具,对页面进行编译后,可以得到几个比较重要的DLL,这里需要您亲自去MSDN查查其用法,如果您没时间动手也没关系,不妨碍理解。
我们用ILSPY(一款.NET的反编译工具)反编译这两个DLL,得到:



打开这两个DLL后,查看其源代码。可以看到aspx页面实际上会被编译成一个类,页面的代码都会被编译成各自对应的控件,其基类,就是aspx页面对应的cs文件中的Default类,所以很明显了,方法从基类继承下来了,自然可以注册了。哦对了,顺着这个思路,其实可以看到很多有意思的技术底层的原理,待大伙儿探讨了。
ASP.NET页面继承关系的更多相关文章
- asp.net页面的请求处理响应的过程描述
概述 本篇博客从IIS到asp.net页面后台运行完,整个过程做一个简单的描述,如果有不对的地方,望指出. IIS处理请求的过程 我们通过浏览器(Socket客户端)访问一个IIS服务器上的网页时,该 ...
- 第一篇:初识ASP.NET控件开发_第一节:控件类及其继承关系
1)System.Web.UI.Control(以下简称Control) Control 类是包括自定义控件.用户控件和页在内的所有 ASP.NET 服务器控件的基类..定义由所有 ASP.NET 服 ...
- C# 问题解决思路--《数组bytes未定义》,ASP.NET页面加载顺序
好久没写博客了,废话不多说,直接说问题. 问题发生情况,首先这个是老项目,然后我是第一次修改.当我解决了各种引用,数据库配置之后等类似的问题,我启动的项目的时候,无任何问题,但是当我点击页面的按钮的时 ...
- Asp.Net页面(母版页)加载顺序
ASP.NET 母版页和内容页中的事件 母版页和内容页都可以包含控件的事件处理程序.对于控件而言,事件是在本地处理的,即内容页中的控件在内容页中引发事件,母版页中的控件在母版页中引发事件.控件事件不会 ...
- ASP.NET页面事件顺序
当一个页面请求发送到WEB服务器时,不论该事件是由页面提交还是由页面重定向而激发的,页面在其被创建到释放的过程中都会运行一系列的事件.一个ASP.NET页面从悲怆见到释放的过程包含10个事件. (1) ...
- 【推荐】asp.net 页面的生命周期
当一个页面请求发送到WEB服务器时,不论该事件是由页面提交还是由页面重定向而激发的,页面在其被创建到释放的过程中都会运行一系列的事件.一个ASP.NET页面从被创建到释放的过程包含10个事件. (1) ...
- (转)Asp.net页面生命周期详解任我行(1)-小试牛刀,编写页面代码
原文地址:http://www.cnblogs.com/xuyubing/archive/2013/10/01/3348344.html 前言 很久很久以前,还是我在学校的时候,我就看了传智里面视频, ...
- Asp.net页面生命周期详解任我行(2)-WebForm页面生命周期WEBFORM_ASPNET控件树的生成和作用
摘要 页面类是如何结合后台文件类生成整个页面的HTML的代码和后台输出的代码输出到浏览器中呢?这就牵扯到Asp.net页面生命周期中一个很重要的概念控件树.服务器以反射的方式创建了页面类对象 内容 我 ...
- Asp.net页面生命周期详解任我行(1)-小试牛刀,编写页面代码
前言 很久很久以前,还是我在学校的时候,我就看了传智里面视频,学习了一下Asp.net页面生命周期,当时看的时候,因为内功不够深厚,看起来很吃力,现在回头温习了一下,还是有点收获的,于是想用博客记录一 ...
随机推荐
- c++ 资源索引
1.http://snippets.dzone.com/tag/c/ --数以千计的有用的C语言源代码片段 2.http://www.hotscripts.com/category/c-cpp/sc ...
- html 调用 activeX(c++)
1.新建MFC ActiveX 2.添加方法 3.找到add函数编写代码 4.在test.idl中找到最后一个uuid 5.编译工程,会自动注册控件 6.html中的代码 <html> & ...
- 用纯CSS3绘制萌系漫画人物动态头像
大家已经见惯了用CSS3画的图标.LOGO.头像,这次台湾同学Rei给我们带来了用纯CSS3绘制的日本动漫<轻音少女>女主角秋山澪的动态头像.看到动图我震惊了!!!CSS3的强大再次霸气测 ...
- 不同分辨率下获取不同js文件
获取当前网站的目录 //js获取网站根路径(站点及虚拟目录),获得网站的根目录或虚拟目录的根地址 function getRootPath(){ //整个域名(如:http://vc3.cn/ind ...
- Qt5-MSVC2012-qDebug中文乱码解决方法
1.首先看代码: int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); qDeb ...
- Zigbee、WiFi和433MHz无线技术各有特点
Zigbee.WiFi和433MHz无线技术都属于近距离无线通讯技术,并且都使用ISM免执照频段,但它们各具特点. ZigBee的特点是低功耗.高可靠性.强抗干扰性,布网容易,通过无线中继器可以非 ...
- 厂商自定义USB设备类概述
USB协会将常用具有相同/相似功能的设备归为一类,并制定了相关的设备类规范,这样就能保障只要依照同样的规范标准,即使不同的厂商开发的USB设备也可以使用同样的驱动程序,而且操作系统中无须为每种设备提供 ...
- 匿名方法和Lambda表达式
匿名方法本质上是一传递给委托的代码块,是使用委托的另一种方法. 规则: 1.匿名方法中不能使用跳转语句跳至次匿名方法的外部,反之亦然:匿名方法外部的跳转语句也不能跳转到匿名方法的内部: 2.在匿名方法 ...
- SecureCRT按退格键出现^H问题解决
解决办法一: 解决办法二: ctrl+backspace.即是返回
- OC基础14:使用文件
"OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.对于NSFileManager类,文件 ...