Page 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
代表一個.aspx檔案,也稱為網頁表單頁面,向承載 ASP.NET 網頁應用程式的伺服器請求。
public ref class Page : System::Web::UI::TemplateControl, System::Web::IHttpHandler
public class Page : System.Web.UI.TemplateControl, System.Web.IHttpHandler
type Page = class
inherit TemplateControl
interface IHttpHandler
Public Class Page
Inherits TemplateControl
Implements IHttpHandler
- 繼承
- 衍生
- 實作
範例
以下程式碼範例展示了該類別在程式碼背後頁面模型中的 Page 應用。 請注意,背後的原始碼檔案宣告了一個部分類別,該類別繼承自基底頁面類別。 基底頁面類別可以是 Page,也可以是從 Page衍生出的另一個類別。 此外,部分類別允許程式碼背後的檔案使用頁面上定義的控制項,而無需將其定義為欄位成員。
using System;
public partial class MyCodeBehindCS : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// Place page-specific code here.
}
// Define a handler for the button click.
protected void SubmitBtn_Click(object sender, EventArgs e)
{
MySpan.InnerHtml = "Hello, " + MyTextBox.Text + ".";
}
}
Partial Class MyCodeBehindVB
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' Place page-specific code here.
End Sub
' Define a handler for the button click.
Protected Sub SubmitBtn_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyButton.Click
MySpan.InnerHtml = "Hello, " + MyTextBox.Text + "."
End Sub
End Class
以下程式碼範例顯示了對應前一個原始碼後方檔案的.aspx檔案。
這很重要
此範例中有一個文字框可接受使用者輸入,這可能構成安全威脅。 預設情況下,ASP.NET 網頁會驗證使用者輸入中不包含腳本或 HTML 元素。 欲了解更多資訊,請參閱 腳本漏洞概述。
<%@ Page Language="C#" CodeFile="pageexample.aspx.cs" Inherits="MyCodeBehindCS" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Page Class Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table>
<tr>
<td> Name: </td>
<td> <asp:textbox id="MyTextBox" runat="server"/> </td>
</tr>
<tr>
<td></td>
<td><asp:button id="MyButton" text="Click Here" onclick="SubmitBtn_Click" runat="server"/></td>
</tr>
<tr>
<td></td>
<td><span id="MySpan" runat="server" /></td>
</tr>
</table>
</div>
</form>
</body>
</html>
<%@ Page Language="VB" CodeFile="pageexample.aspx.vb" Inherits="MyCodeBehindVB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Page Class Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table>
<tr>
<td> Name: </td>
<td> <asp:textbox id="MyTextBox" runat="server"/> </td>
</tr>
<tr>
<td></td>
<td><asp:button id="MyButton" text="Click Here" onclick="SubmitBtn_Click" runat="server"/></td>
</tr>
<tr>
<td></td>
<td><span id="MySpan" runat="server" /></td>
</tr>
</table>
</div>
</form>
</body>
</html>
你必須使用 @ Page 指令,並使用 Inherits 和 CodeFile 屬性來將背後的程式碼檔案連結到 .aspx 檔案。 在此範例中,Inherits屬性表示類別CodeFile,MyCodeBehind屬性表示包含類別的語言特定檔案路徑。
以下程式碼範例展示了單檔頁面模型,以及如何存取 屬性 IsPostBack 與 Response 的屬性 Page。
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder();
if (Page.IsPostBack)
sb.Append("You posted back to the page.<br />");
sb.Append("The host address is " + Page.Request.UserHostAddress + ".<br />");
sb.Append("The page title is \"" + Page.Header.Title + "\".");
PageMessage.Text = sb.ToString();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Page Class Example</title>
</head>
<body>
<form id="form1"
runat="server">
<div>
<asp:Label id="PageMessage"
runat="server"/>
<br /> <br />
<asp:Button id="PageButton"
Text="PostBack"
runat="server" />
</div>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim sb As New StringBuilder()
If (Page.IsPostBack) Then
sb.Append("You posted back to the page.<br />")
End If
sb.Append("The host address is " + Page.Request.UserHostAddress + ".<br />")
sb.Append("The page title is """ + Page.Header.Title + """.")
PageMessage.Text = sb.ToString()
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Page Class Example</title>
</head>
<body>
<form id="form1"
runat="server">
<div>
<asp:Label id="PageMessage"
runat="server"/>
<br /> <br />
<asp:Button id="PageButton"
Text="PostBack"
runat="server" />
</div>
</form>
</body>
</html>
備註
該 Page 類別與副檔名為 .aspx 的檔案相關聯。 這些檔案會在執行時編譯為 Page 物件,並快取於伺服器記憶體中。
如果你想用代碼背後技術建立網頁表單頁面,可以從這個類別推導出來。 快速應用程式開發(RAD)設計器,如 Microsoft Visual Studio,會自動使用此模型來建立網頁表單頁面。
該 Page 物件作為頁面中所有伺服器控制項的命名容器,除了實作該 INamingContainer 介面的控制項或實作該介面控制項的子控制項外。
這個 Page 類別是一個控制項,作為你網頁應用程式的使用者介面,因此應被仔細檢視,以確保遵循撰寫安全程式碼及保護應用程式的最佳實務。 關於這些主題的一般資訊,請參閱 《網頁應用安全威脅概述》、《 安全政策最佳實務》及 《關鍵安全概念》。 欲了解更多具體資訊,請參閱《 保障標準控制措施》、《 如何:顯示安全錯誤訊息》、《 如何:透過對字串套用 HTML 編碼來防範網頁應用程式中的腳本漏洞》,以及驗證 控制項介紹。
建構函式
| 名稱 | Description |
|---|---|
| Page() |
初始化 Page 類別的新執行個體。 |
欄位
| 名稱 | Description |
|---|---|
| postEventArgumentID |
一個字串,定義渲染頁面中 EVENTARGUMENT 隱藏欄位。 |
| postEventSourceID |
一個定義渲染頁面中 EVENTTARGET 隱藏欄位的字串。 |
屬性
| 名稱 | Description |
|---|---|
| Adapter |
拿到瀏覽器專用的控制器轉接器。 (繼承來源 Control) |
| Application |
取得 HttpApplicationState 目前網頁請求的物件。 |
| AppRelativeTemplateSourceDirectory |
取得或設定包含此控制項的 or UserControl 物件的Page應用程式相對虛擬目錄。 (繼承來源 Control) |
| AppRelativeVirtualPath |
取得或設定應用程式相對的虛擬目錄路徑,指向解析與編譯控制項的檔案。 (繼承來源 TemplateControl) |
| AspCompatMode |
設定一個值,表示該頁面是否能在單執行緒公寓(STA)執行緒上執行。 |
| AsyncMode |
設定一個值,表示該頁面是同步處理還是非同步處理。 |
| AsyncTimeout |
取得或設定一個值,表示處理非同步任務時所使用的逾時間隔。 |
| AutoHandlers |
已淘汰.
該 AutoHandlers 屬性在 NET 2.0 中已被棄用 ASP.NET。 它是由產生的類別使用,並非用於你的程式碼中。 (繼承來源 TemplateControl) |
| AutoPostBackControl |
在頁面中取得或設定用於回貼的控制權。 |
| BindingContainer |
取得包含該控制項資料綁定的控制項。 (繼承來源 Control) |
| Buffer |
設定一個值,表示頁面輸出是否被緩衝。 |
| Cache |
取得 Cache 與該頁面所屬應用程式相關的物件。 |
| ChildControlsCreated |
會取得一個值,表示伺服器控制項的子控制項是否已被建立。 (繼承來源 Control) |
| ClientID |
取得由 ASP.NET 產生的 HTML 標記的控制 ID。 (繼承來源 Control) |
| ClientIDMode |
取得或設定用於產生屬性值 ClientID 的演算法。 (繼承來源 Control) |
| ClientIDSeparator |
會得到一個字元值,代表該屬性中使用 ClientID 的分隔符字元。 (繼承來源 Control) |
| ClientQueryString |
取得所請求網址的查詢字串部分。 |
| ClientScript |
取得 ClientScriptManager 一個用來管理、註冊及新增腳本到頁面的物件。 |
| ClientTarget |
它會取得或設定一個值,讓你能覆蓋自動偵測瀏覽器功能的限制,並指定特定瀏覽器客戶端頁面的呈現方式。 |
| CodePage |
設定目前 Page代碼頁識別碼。 |
| ContentType |
設定與頁面相關物件的 HTTP MIME 類型 HttpResponse 。 |
| Context |
取得與頁面相關聯的 HttpContext 物件。 |
| Controls |
取得 ControlCollection 一個物件,代表 UI 階層中指定伺服器控制項的子控制項。 (繼承來源 Control) |
| Culture |
設定與頁面相關物件的文化 ID Thread 。 |
| DataItemContainer |
如果命名容器實 IDataItemContainer作 。 (繼承來源 Control) |
| DataKeysContainer |
如果命名容器實 IDataKeysControl作 。 (繼承來源 Control) |
| DesignMode |
會獲得一個值,表示是否在設計表面上使用控制項。 (繼承來源 Control) |
| EnableEventValidation |
取得或設定一個值,指示頁面是否驗證回貼事件與回調事件。 |
| EnableTheming |
取得或設定一個布林值,表示主題是否適用於從該 TemplateControl 類別衍生的控制項。 (繼承來源 TemplateControl) |
| EnableViewState |
當當前頁面請求結束時,會取得或設定一個值,指示該頁面是否維持其視圖狀態及其所包含任何伺服器控制的視圖狀態。 |
| EnableViewStateMac |
取得或設定一個值,指示 ASP.NET 在頁面從用戶端回傳時,是否應該檢查頁面檢視狀態中的訊息驗證碼(MAC)。 |
| ErrorPage |
取得或設定錯誤頁面,當頁面異常發生時,請求瀏覽器會被重新導向。 |
| Events |
會取得一個事件處理代理清單來管理控制。 這個屬性是唯讀的。 (繼承來源 Control) |
| FileDependencies |
已淘汰.
設定一個檔案陣列,讓目前 HttpResponse 的物件依賴這些檔案。 |
| Form |
取得頁面的 HTML 表單。 |
| HasChildViewState |
會取得一個值,表示目前伺服器控制項的子控制項是否儲存了任何檢視狀態設定。 (繼承來源 Control) |
| Header |
如果 |
| ID |
取得或設定特定類別實例 Page 的識別碼。 |
| IdSeparator |
取得用於建立頁面控制項唯一 ID 時分隔控制識別碼的字元。 |
| IsAsync |
會得到一個值,表示該頁面是否被非同步處理。 |
| IsCallback |
會獲得一個值,指示該頁面請求是否是回調的結果。 |
| IsChildControlStateCleared |
會取得一個值,表示該控制中所包含的控制是否具有控制狀態。 (繼承來源 Control) |
| IsCrossPagePostBack |
會有一個值來表示該頁面是否涉及跨頁回貼。 |
| IsPostBack |
會得到一個值,表示該頁面是第一次被渲染,還是因為回貼而載入。 |
| IsPostBackEventControlRegistered |
會得到一個值,表示執行回貼的頁面控制項是否已被註冊。 |
| IsReusable |
會得到一個值,表示該物件是否 Page 可以重複使用。 |
| IsTrackingViewState |
會得到一個值,表示伺服器控制是否正在儲存對其檢視狀態的變更。 (繼承來源 Control) |
| IsValid |
會獲得一個值,表示頁面驗證是否成功。 |
| IsViewStateEnabled |
會取得一個值,表示此控制是否啟用了檢視狀態。 (繼承來源 Control) |
| Items |
會取得頁面上下文中儲存的物件清單。 |
| LCID |
設定與頁面相關物件的區域識別碼 Thread 。 |
| LoadViewStateByID |
會得到一個值,表示控制項是否參與載入其視圖狀態 ID ,而非索引。 (繼承來源 Control) |
| MaintainScrollPositionOnPostBack |
會取得或設定一個值,指示用戶在回傳後是否要回到客戶端瀏覽器的相同位置。 此特性取代了已 SmartNavigation 過時的特性。 |
| Master |
會取得決定頁面整體外觀的母版頁面。 |
| MasterPageFile |
取得或設定母版的虛擬路徑。 |
| MaxPageStateFieldLength |
取得或設定頁面狀態欄位的最大長度。 |
| MetaDescription |
取得或設定「描述」 |
| MetaKeywords |
取得或設定「關鍵字」 |
| ModelBindingExecutionContext |
取得模型綁定執行上下文。 |
| ModelState |
取得包含模型狀態及模型綁定驗證狀態的模型狀態字典物件。 |
| NamingContainer |
會取得伺服器控制項命名容器的參考,該容器會建立一個獨特的命名空間,用來區分具有相同 ID 屬性值的伺服器控制項。 (繼承來源 Control) |
| Page |
會取得包含 Page 伺服器控制的實例參考。 (繼承來源 Control) |
| PageAdapter |
會取得能為特定請求瀏覽器渲染頁面的轉接器。 |
| PageStatePersister |
取得與頁面相關聯的 PageStatePersister 物件。 |
| Parent |
在頁面控制階層中,會取得伺服器控制項的父控制權的參考。 (繼承來源 Control) |
| PreviousPage |
會取得將控制權轉移到當前頁面的頁面。 |
| RenderingCompatibility |
會得到一個值,指定渲染後的 HTML 會相容的 ASP.NET 版本。 (繼承來源 Control) |
| Request |
取得 HttpRequest 所請求頁面的物件。 |
| Response |
取得與該Page物件相關聯的HttpResponse物件。 這個物件允許你向客戶端傳送 HTTP 回應資料,並包含該回應的相關資訊。 |
| ResponseEncoding |
設定目前 HttpResponse 物件的編碼語言。 |
| RouteData |
取得 RouteData 目前 RequestContext 實例的價值。 |
| Server |
取得 |
| Session |
取得目前 |
| Site |
當在設計表面渲染時,會取得承載當前控制項的容器資訊。 (繼承來源 Control) |
| SkinID |
取得或設定皮膚貼合控制劑。 (繼承來源 Control) |
| SkipFormActionValidation |
取得或設定一個值,指示查詢字串值是否已被驗證。 |
| SmartNavigation |
已淘汰.
會取得或設定一個值,指示是否啟用智慧導航。 這個屬性已被取代。 |
| StyleSheetTheme |
取得或設定在頁面生命週期早期套用到頁面的主題名稱。 |
| SupportAutoEvents |
會取得一個值,表示該 TemplateControl 控制是否支援自動事件。 (繼承來源 TemplateControl) |
| TemplateControl |
取得或設定包含此控制項的範本參考。 (繼承來源 Control) |
| TemplateSourceDirectory |
取得包含當前伺服器控制權的 or UserControl 虛擬目錄Page。 (繼承來源 Control) |
| Theme |
取得或設定頁面主題名稱。 |
| Title |
負責取得或設定頁面標題。 |
| Trace |
取得 TraceContext 目前網頁請求的物件。 |
| TraceEnabled |
設定一個值,表示物件是否啟用 Page 追蹤。 |
| TraceModeValue |
設定追蹤語句在頁面上顯示的模式。 |
| TransactionMode |
設定該頁面的交易支援層級。 |
| UICulture |
設定與頁面相關物件的 Thread 使用者介面(UI)ID。 |
| UniqueFilePathSuffix |
在檔案路徑上加上獨特的後綴,方便快取瀏覽器使用。 |
| UniqueID |
取得伺服器控制的唯一、階層限定的識別碼。 (繼承來源 Control) |
| UnobtrusiveValidationMode |
取得或設定一個值,指示是否使用不顯眼的 JavaScript 進行客戶端驗證。 |
| User |
取得提出頁面請求的使用者資訊。 |
| ValidateRequestMode |
取得或設定一個值,指示頁面是否檢查瀏覽器的客戶端輸入是否有潛在危險的值。 |
| Validators |
取得請求頁面中所有驗證控制的集合。 |
| ViewState |
取得狀態資訊字典,讓你能儲存並還原伺服器控制的多個請求,針對同一頁面。 (繼承來源 Control) |
| ViewStateEncryptionMode |
取得或設定視圖狀態的加密模式。 |
| ViewStateIgnoresCase |
會得到一個值,表示該物件是否 StateBag 不區分大小寫。 (繼承來源 Control) |
| ViewStateMode |
取得或設定此控制的視圖狀態模式。 (繼承來源 Control) |
| ViewStateUserKey |
在與當前頁面相關的檢視狀態變數中,為個別使用者指派識別碼。 |
| Visible |
取得或設定一個值,表示物件是否 Page 被渲染。 |
方法
事件
| 名稱 | Description |
|---|---|
| AbortTransaction |
當使用者結束交易時會發生。 (繼承來源 TemplateControl) |
| CommitTransaction |
當交易完成時發生。 (繼承來源 TemplateControl) |
| DataBinding |
當伺服器控制項綁定到資料來源時會發生。 (繼承來源 Control) |
| Disposed |
當伺服器控制從記憶體中釋放時發生,這是伺服器控制生命週期中請求 ASP.NET 頁面的最後階段。 (繼承來源 Control) |
| Error |
當拋出未處理的例外時會發生。 (繼承來源 TemplateControl) |
| Init |
發生在伺服器控制初始化時,這是其生命週期的第一步。 (繼承來源 Control) |
| InitComplete |
當頁面初始化完成時會發生。 |
| Load |
當伺服器控制項載入 Page 物件時會發生。 (繼承來源 Control) |
| LoadComplete |
發生在頁面生命週期載入階段的末尾。 |
| PreInit |
發生在頁面初始化之前。 |
| PreLoad |
發生在頁面 Load 事件之前。 |
| PreRender |
發生在物件載入後 Control 但渲染之前。 (繼承來源 Control) |
| PreRenderComplete |
發生在頁面內容渲染之前。 |
| SaveStateComplete |
發生在頁面完成儲存所有檢視狀態與控制狀態資訊後,以及頁面上的控制項。 |
| Unload |
當伺服器控制項從記憶體卸載時發生。 (繼承來源 Control) |
明確介面實作
擴充方法
| 名稱 | Description |
|---|---|
| EnableDynamicData(INamingContainer, Type, IDictionary<String,Object>) |
啟用指定資料控制的動態資料行為。 |
| EnableDynamicData(INamingContainer, Type, Object) |
啟用指定資料控制的動態資料行為。 |
| EnableDynamicData(INamingContainer, Type) |
啟用指定資料控制的動態資料行為。 |
| FindDataSourceControl(Control) |
回傳與指定控制項相關聯的資料來源。 |
| FindFieldTemplate(Control, String) |
回傳指定控制項命名容器中指定欄位的欄位範本。 |
| FindMetaTable(Control) |
回傳包含資料控制項的元值物件。 |
| GetDefaultValues(INamingContainer) |
取得指定資料控制項的預設值集合。 |
| GetMetaTable(INamingContainer) |
取得指定資料控制的表格元資料。 |
| SetMetaTable(INamingContainer, MetaTable, IDictionary<String,Object>) |
設定指定資料控制項的表格元資料及預設值映射。 |
| SetMetaTable(INamingContainer, MetaTable, Object) |
設定指定資料控制項的表格元資料及預設值映射。 |
| SetMetaTable(INamingContainer, MetaTable) |
設定指定資料控制項的資料表元資料。 |
| TryGetMetaTable(INamingContainer, MetaTable) |
判斷表格中繼資料是否可用。 |