asp.net 2.0页面模型的最终形态分析

分析下C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files里面的文件,看一下最终的页面类,如类Default2,三个文件分别写了asp.Default2_aspx类了Default2类

Default2类
根据aspx文件写的,
public partial class Default2 : System.Web.SessionState.IRequiresSessionState {
   
   
    #line 18 "F:/web/AtlasWebSite2/Default2.aspx"
    protected global::System.Web.UI.WebControls.Label Label1;
    #line default
    #line hidden
    #line 16 "F:/web/AtlasWebSite2/Default2.aspx"
    protected global::System.Web.UI.HtmlControls.HtmlForm form1;
    #line default
    #line hidden
    protected System.Web.Profile.DefaultProfile Profile {
        get {
            return ((System.Web.Profile.DefaultProfile)(this.Context.Profile));
        }
    }
控件声明全在这里了
第二部分就是cs文件,这里不多产了,这样拼成了Default2类

asp.Default2_aspx类
声明如下,
namespace ASP {public class default2_aspx : global::Default2, System.Web.IHttpHandler{}}
基本上是从上到下的格式
自己写的方法(用script),如
public string a()
        {
            return "aaa";
        }
看到没有自己在前台写的方法只在aspx类里面有,在父类Default2是没有的

 首先生成title的方法,如private System.Web.UI.HtmlControls.HtmlTitle @__BuildControl__control3()

生成head   private global::System.Web.UI.HtmlControls.HtmlHead @__BuildControl__control2()

看到控件label就生成label private global::System.Web.UI.WebControls.Label @__BuildControlLabel1()

生成 form1的 private global::System.Web.UI.HtmlControls.HtmlForm @__BuildControlform1()

展现form1的这里粘全
private void @__Renderform1(System.Web.UI.HtmlTextWriter @__w, System.Web.UI.Control parameterContainer) {
            @__w.Write("/r/n    <div>/r/n        ");
            parameterContainer.Controls[0].RenderControl(@__w);
           
            #line 18 "F:/web/AtlasWebSite2/Default2.aspx"
                                                               @__w.Write(a());//看到没有,这是在前台写的过程如<%=a()%>如果没有写前台代码,这个方法就不会有.

           
            #line default
            #line hidden
            @__w.Write("</div>/r/n    ");
        }

建立控件树  private void @__BuildControlTree(default2_aspx @__ctrl)  不知道干嘛的.

不知道的方法  protected override void FrameworkInitialize()   public override int GetTypeHashCode()

因为继承httphandler嘛,所以有.
public override void ProcessRequest(System.Web.HttpContext context) {
            base.ProcessRequest(context);
        }
(搞了半天输出还是用page类的)
注意哦这里的类是asp.Default2._aspx它是继承Default2.的,所以这里的base当然是Default2.
最后还有一个 FastObjectFactory_app_web_uft5v__o类,我们可以理解为高效生成对象.

1.1的差不多,在继承类里实例化了服务器控件,但只有继承类代码,没有父类代码.

既然前台和后台都有了dll,那为什么还需要网页的存在,因为asp.net每次编译之前都要比较下aspx文件有没有什么变化,所以需要aspx文件存在.
好了,这里只是大概说一说,深入的话,网上有编文章叫深入剖析ASP.NET的编译原理之一:
http://www.cnblogs.com/artech/archive/2007/05/26/753620.html自己看看
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值