iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 17
1
Modern Web

ASP.NET Web Form 入門30天系列 第 17

[ASP.NET] 網頁常用物件-初淺談Page物件

本篇擷取重點:

  1. Page物件的由來
  2. Page物件的常用屬性及事件

一、Page物件物件的由來

Page物件的根本,是從Page類別開始,Page類別所屬的命名空間為System.Web.UI,

當我們在 【ASP.NET Web 應用程式(.NET Framework)】 新增一個 【web表單】 並命名為index時,可以在方案總管中看到【index.aspx及index.aspx.cs】,

https://ithelp.ithome.com.tw/upload/images/20190918/20120056z21vncVVNn.jpg

開啟其中的index.aspx,你會看到一個由少數標籤所組成的文字檔內容,如下圖:

https://ithelp.ithome.com.tw/upload/images/20190918/20120056TiHqieeKgj.jpg

注意一下最上方的那一行Page指令的標籤程式碼,這個標籤的屬性CodeFile為程式碼後置檔案連結到「index.aspx.cs」,Inherits則指定網頁繼承了「test0918.index」類別。(ASP.NET Web 應用程式(.NET Framework)的專案名稱為命名空間.網頁名稱為類別名稱):

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="test0918.index" %>

按一下方案總管的檔案清單,切換至上述的關聯檔案「index.aspx.cs」,得到以下的程式碼內容:

https://ithelp.ithome.com.tw/upload/images/20190918/20120056Aib7mmduol.jpg

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace test0918
{
    public partial class index : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

這個檔案的程式碼內容,在名稱為「test0918」的命名空間中宣告了名稱為「index」的類別,而這個類別繼承自System.Web.UI.Page類別,此類別提供用來實作各種網頁功能所需的類別成員,並且在網頁執行的時候,建立Page類別的物件實體,以支援網頁的運作

簡單來說,Page類別與副檔名為 .aspx 的檔案相關聯。 這些檔案會在執行時間編譯成Page物件,並在伺服器記憶體中快取。Page物件是一個控制項的容器,換句話說,我們在ASP.NET網頁所新增的控制項就是新增在Page物件,像是在一個大盒子中放入其他控制項的小盒子,如下圖所示:

https://ithelp.ithome.com.tw/upload/images/20190918/20120056ELAVv6vwtn.jpg

==================================================================
貼心小補充:

關於Page物件:

  • 每一個.aspx檔案對應一個Page物件
  • .aspx頁面與.aspx.cs(後台代碼類)合併生成Page類別
  • Page物件是Page類別的實例
  • 所有的.aspx檔案都繼承自System.Web.UI.Page類別

==================================================================


二、Page物件的常用屬性及事件

常用屬性 說明
IsPostBack 檢查 Web Form 表單是否為第一次連線或因PostBack而被載入
IsValid 檢查 Web Form 表單是否通過驗證
Title 存取網頁位在瀏覽程式上方顯示的標題文字

==================================================================
貼心小補充:

※當網頁第一次連線時,進行變數、控制項的初始化、開啟檔案、連線資料庫取得所需資料,都可藉由IsPostBack屬性來避免重複執行這些動作。

==================================================================

常用事件 說明
Load 當 ASP.NET 網頁已經載入記憶體時,產生此事件,可以在此事件初始控制項屬性,或執行 Web Form 表單處理時也會觸動此事件

==================================================================
貼心小補充:

其中,Load為預設事件,在 Web form 建立時就已存在程式碼後置頁面(即為.aspx.cs檔案中的Page_Load事件),較值得注意的是,

在Web畫面上「做的任何動作」,都會引起PostBack(回傳)動作,進而重新觸發Page_Load事件。例如:點TextBox、按任何一個Button按鈕.....等。所以在網頁設計中,常常加入一段If(!IsPostBack) 的判別式來判斷「網頁是否第一次被執行」。

更多事件: https://dotblogs.com.tw/hatelove/archive/2009/12/18/pagelifecycle.aspx (感謝朱大提供)

==================================================================

參考資料:

http://www.kangting.tw/2007/10/aspnet-page.html
https://www.itread01.com/content/1548074713.html
http://www.csd.nutn.edu.tw/ASP/ASP_NET_04.pdf
http://deepgreat02.blogspot.com/2015/07/vs-2012-c-page-20150724.html


此篇內容整理自多篇網路文章、PPT及自己的理解,但筆者也仍處在初階的學習過程,對程式概念的理解及判斷都尚不足,若有錯誤的地方,也煩請各位大大提點,先謝謝大家惹!!


明日(9/19)預定探討課題:

  • Request物件

上一篇
[ASP.NET] [C#] 多載 (Overload)
下一篇
[ASP.NET] 網頁常用物件-初淺談Request物件
系列文
ASP.NET Web Form 入門30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
小朱
iT邦新手 4 級 ‧ 2019-09-18 23:25:03

事件有很多,Load只是其中一個,可參考這篇文章了解Page裡面有多少事件以及其關聯:
https://dotblogs.com.tw/hatelove/archive/2009/12/18/pagelifecycle.aspx

Page本身的學問不少,但現在提那些太早了XD

哇(下巴掉到地上...),謝謝朱大,好文快收藏XDD

我要留言

立即登入留言