ASP.NET深入淺出系列3- Page類

來源:互聯網
上載者:User

在.NET Framework中,Page類為ASP.NET應用程式從.aspx檔案構建的所有對象提供基本行為。該類在namespace System.Web.UI命名空間中定義,從TemplateControl中派生出來,實現了IHttpHandler介面:
public class Page : TemplateControl, IHttpHandler
TemplateControl是向ASP.NET頁面和使用者控制項提供準系統的抽象類別。Control類位於這個層次的頂端。它定義由所有的ASP.NET伺服器端元素(頁面,控制項)共用的屬性、方法和事件。結構圖如下:

Page對象的重要屬性
ClientQueryString:擷取請求的 URL 的查詢字串部分。這個屬性可以用於處理特殊格式的 URL查詢字串。
Visible:這是一個重寫自Control類的屬性,如果頁面的Visible為false,ASP.NET不會為此頁面產生任何HTML代碼,這時只顯示使用Response.write輸出的文本。
IsValid:擷取一個值,該值指示頁驗證是否成功。這個屬性在使用驗證控制項時常用。
IsPostBack:擷取一個值,該值指示該頁是否正為響應用戶端回傳而載入,或者它是否正被首次載入和訪問。如果是為響應用戶端回傳而載入該頁,則為 true;否則為 false。這個屬性相當常用,我們常常是在第一次訪問頁面時進行某些初始化,回傳時不進行某些初始化工作,這時候我們就要在page_load事件中使用這個屬性判斷是否是回傳。
Request:擷取請求的頁的 System.Web.HttpRequest 對象。
Response:擷取與該 System.Web.UI.Page 對象關聯的 System.Web.HttpResponse 對象。該對象使您得以將 HTTP 響應資料發送到用戶端,並包含有關該響應的資訊。
Session:擷取 ASP.NET 提供的當前 Session 對象。
Theme:擷取或設定頁面主題的名稱。
Title:擷取或設定頁的標題,如果需要動態更換瀏覽器網頁標題,這個屬性很有用。
Controls: 擷取 System.Web.UI.ControlCollection 對象,該對象表示 UI 階層中指定伺服器控制項的子控制項。這是繼承於Control類的屬性。當我們需要訪問頁面中的控制項時它很有用。

Page對象的重要方法
DataBind():將頁面中所有的資料繫結控制項綁定到資料來源。
例如:
int[] a = { 1,2,3,4};
GridView1.DataSource = a;
GridView2.DataSource = a;
this.DataBind();
我們可以使用頁面的DataBind()方法將兩個GridView綁定到資料來源。
FindControl():在頁命名容器中搜尋帶指定標識符的伺服器控制項。這裡要注意的是這個方法並不搜尋自身是命名容器的子控制項,如果需要搜尋網頁面的所有控制項,可以使用遞迴方法。
SetFocus(Control control):將瀏覽器焦點設定為指定控制項。這是一個非常有用的方法,比方說我們希望頁面載入後,焦點在TextBox1對話方塊上,我們可以在page_load事件中輸入如下代碼:
this.SetFocus(TextBox1);

Page對象的重要事件
請參見http://www.cnblogs.com/nuaalfm/archive/2008/09/11/1289325.html

我們都知道,所有的aspx的代碼分離類都是繼承於這個Page類的,但有的時候我們可能發現有一些頁面的部分功能大量重複,我們可以將這些重複的部分抽象出來到一個類,讓這個類繼承於Page類,然後再讓那些代碼分離類繼承於這個類,我們這裡舉一個實用的例子:

有時我們可能希望我們的頁面支援在textbox中輸入值後,單擊斷行符號後我們可以動態指定調用哪一個按鈕的方法。
頁面基類為:

Code
namespace Sample
{
    public class Page : System.Web.UI.Page
    {
        public Page()
        {

        }         // Internals  
        public  void TieButton(Control TextBoxToTie, Control ButtonToTie)
        {
            // Init jscript
            string jsString = "";

            // Check button type and get required jscript
            if (ButtonToTie is LinkButton)
            {
                jsString = "if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {"
                    + this.ClientScript.GetPostBackEventReference(ButtonToTie, "").Replace(":", "$") + ";return false;} else return true;";
            }
            else if (ButtonToTie is ImageButton)
            {
                jsString = "if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {"
                    + this.ClientScript.GetPostBackEventReference(ButtonToTie, "").Replace(":", "$") + ";return false;} else return true;";
            }
            else
            {
                jsString = "if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {document."
                    + "forms[0].elements['" + ButtonToTie.UniqueID.Replace(":", "_") + "'].click();return false;} else return true; ";
            }

            // Attach jscript to the onkeydown attribute - we have to cater for HtmlControl or WebControl
            if (TextBoxToTie is HtmlControl)
            {
                ((HtmlControl)TextBoxToTie).Attributes.Add("onkeydown", jsString);
            }
            else if (TextBoxToTie is WebControl)
            {
                ((WebControl)TextBoxToTie).Attributes.Add("onkeydown", jsString);
            }
        }
    }
}

 

頁面類為:

Code
public partial class _Default : Sample.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {
        this.TieButton(TextBox1, Button2);
    }
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.