ASP.NET進階(4):認識Page類嗎?

來源:互聯網
上載者:User
其實看到這個標題,我想一些人應該知道我們要談論.cs類的實際應用。以前我是ASP程式員,那時候用VBS指令碼編程,如果要使用其他方法(比如公用的方法)就得include一些function.asp,就像js的運行一樣也要先引用其他的js函數。 所以,轉到ASP.NET後,我也沒在意類這個東西,也不清楚靜態和非靜態區別,反正就是執行個體化後就可以調用其方法就行了,而aspx.cs裡面都是寫方法的,就是一股腦的還是以前的編程模式。或許有些人也有這種經曆,但是我們不能一直這樣渾渾噩噩的編程,應該清楚方法是如何執行的,我們如何設計類。隨便建立一個ASPX頁(我這裡只用ASP.NET Web Application,而不是WebSite),都會產生page.aspx\page.aspx.desinger.cs和page.aspx.cs,開啟2個.cs檔案,會發現其中一個是讓我們寫方法的,另外一個就是記錄我們使用的控制項(desginer.cs)。 在VS2003的時候,desginer.cs是不存在的,所有的控制項聲明都在.cs裡,而且預設還會產生一些代碼(如下):    #region Web 表單設計器產生的程式碼
    override protected void OnInit(EventArgs e)
    {
        //
        // CODEGEN: 該調用是 ASP.NET Web 表單設計器所必需的。
        //
        InitializeComponent();
        base.OnInit(e);
    }
    
    /// <summary>
    /// 設計器支援所需的方法 - 不要使用代碼編輯器修改
    /// 此方法的內容。
    /// </summary>
    private void InitializeComponent()
    {    

    }
    #endregion

我們可以看到 OnInit是初始化事件的方法,預設被重寫,因為要執行InitializeComponent這個私人方法,因為InitializeComponent方法每個頁面都不一樣,之所以不一樣是因為他主要是用來給控制項的事件訂閱者法,比如Button1的Click如果有具體行為,就會在這裡增加this.Button1.Click += new EventHandler(Button1_Click);這樣按鈕在被點擊的時候就會執行Button1_Click這個方法了,這些訂閱代碼VS是自動添加的(雖然你可以手動去改他們),2005以後就被隱匿了(內部已經幫我們實現了)。

由此,我們可以想象到,類的執行順序,OnInit ->  InitializeComponent -> Page_Load -> Your Function。當然還有其他的事件方法,我們接著看。【注意】這是經常考的面試題:ASP.NET的生命週期!所謂生命週期,我們都知道一個變數的範圍,一個對象從建立到銷毀就是他的生命週期。所以這個考題就是在考你的(PageName)頁面類的執行個體的執行順序。 執行完了自然就沒了。我們建立的頁面都是繼承自System.Web.UI.Page類,所以基本上就是要看Page類的執行順序。詳情看官方解釋:http://msdn.microsoft.com/zh-cn/library/ms178472(VS.80).aspx,其中介紹了整個過程和相關的事件。其實Page類也是繼承自Control類,所以Page也是個Control哦,所以生命週期裡的一些事件,其實是Control的,比如OnInit,OnLoad,OnPreRender,OnUnload,OnDataBinding,所以其他的控制項也都支援這些事件。在我們開發自訂控制項的時候,也可以操作這些事件,來自訂我們的控制項特性。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.