zoukankan      html  css  js  c++  java
  • 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,得到:

    z

    x

    f

    打开这两个DLL后,查看其源代码。可以看到aspx页面实际上会被编译成一个类,页面的代码都会被编译成各自对应的控件,其基类,就是aspx页面对应的cs文件中的Default类,所以很明显了,方法从基类继承下来了,自然可以注册了。哦对了,顺着这个思路,其实可以看到很多有意思的技术底层的原理,待大伙儿探讨了。

  • 相关阅读:
    HDU1029 Ignatius and the Princess IV
    UVA11039 Building designing【排序】
    UVA11039 Building designing【排序】
    POJ3278 HDU2717 Catch That Cow
    POJ3278 HDU2717 Catch That Cow
    POJ1338 Ugly Numbers(解法二)
    POJ1338 Ugly Numbers(解法二)
    UVA532 Dungeon Master
    UVA532 Dungeon Master
    POJ1915 Knight Moves
  • 原文地址:https://www.cnblogs.com/imjch/p/4114378.html
Copyright © 2011-2022 走看看