关于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 可以具體設置編譯文件臨時目錄,查看生成的中間代碼
?<compilation tempDirectory="d:\compilationTemp"? debug="true">
??</compilation>
?
總結
以上是生活随笔為你收集整理的关于asp.net中partial,asp.net编译笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mesageflow 集成spider
- 下一篇: Javascript的调试利器:Fire