关于asp.net中partial,asp.net编译笔记

 

一使用代码隐藏页

  partial在.net2.0中是一个编译熟性,主要用来分离界面设计代码与用户的逻辑代码,比方添加一个使用隐藏代码的的页面,test.aspx,那么实际上会有两个类,三个cs文件,一个是test类(假设test.aspx在根目录下),test是部分类,页面设计代码中的一些控件会变量声明会在另个同类名的编译文件中自动生成,在编译后这两个类就合并成一个类即编译后的代码不会存在partial一说,而页面类test.aspx.cs会继承合并后的test类,并在控件树生成时将对应控件实例附值给test类的控件变量声明。

----------------Test部分类,隐藏部分代码------------------

public partial class Test: System.Web.SessionState.IRequiresSessionState {
    #line 40 "D:/Projects/Trade.GYZS.NET/gyzs.net/Admin/BasicData/TradeClassEdit.aspx"
    protected global::System.Web.UI.WebControls.TextBox txtParentName;

    ...}

-----------------Test部分类,用户定义部分------------------

public partical class Test:Page{...}

----------------Test Aspx页面代码--------------------------

 public class Test_aspx : global::Test, System.Web.IHttpHandler {...}

 

二直接在aspx中包含代码

使用直接页时生成的代码不会使用部分类特性,参考下面的代码(asp.net2.0)

 public class Test_aspx : global::System.Web.UI.Page, System.Web.SessionState.IRequiresSessionState, System.Web.IHttpHandler{...}

这个类在命名空间ASP下,页面上的控件标签在解析识别后,会变成Test_aspx类内部的保护变量,如:

    #line 133 "D:/Projects/Trade.GYZS.NET/gyzs.net/UserCenter/Subscribe/SubscribeManager.aspx"
        protected global::System.Web.UI.WebControls.Button butAdd;

这些变量在构建控件树时被实例化并。

 

-------------------------------------------

需要注意的是,不管使用隐藏代码还是直接页面,最后形成的执行类,Test_aspx类(最后执行用户请求的类是Test_aspx,注意IHttpHandler接口)其代码基本相同,多继承了Page类,实现了IHttpHandler接口与IRequiresSessionState接口(一个会话相关接口)。

------------------

补充:

在@Page 指顶Debug="true" 以使该页面编译的临时代码保存下来方便查看

在web.config 可以具体设置编译文件临时目录,查看生成的中间代码

 
  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值