UserControl 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示從裝載 ASP.NET Web 應用程式的伺服器要求的 .ascx 檔案 (也稱為使用者控制項)。 此檔案必須從 Web Forms 網頁呼叫,否則會發生剖析器錯誤。
public ref class UserControl : System::Web::UI::TemplateControl, System::Web::UI::IAttributeAccessor, System::Web::UI::IUserControlDesignerAccessor
public class UserControl : System.Web.UI.TemplateControl, System.Web.UI.IAttributeAccessor, System.Web.UI.IUserControlDesignerAccessor
type UserControl = class
inherit TemplateControl
interface IAttributeAccessor
interface IUserControlDesignerAccessor
type UserControl = class
inherit TemplateControl
interface IAttributeAccessor
interface INamingContainer
interface IUserControlDesignerAccessor
Public Class UserControl
Inherits TemplateControl
Implements IAttributeAccessor, IUserControlDesignerAccessor
- 繼承
- 衍生
- 實作
範例
在下列範例 SimpleControl
中定義的 類別會繼承 類別, UserControl 並可用來作為程式代碼後置類別 ASP.NET。 它會使用 TextBox、 Label和 Button Web 伺服器控制件,並定義方法,將屬性值以及兩個 myButton_Click
字串指派 TextBox.Text 給 Label.Text 屬性。
重要
這個範例有一個可接受使用者輸入的文字方塊,這可能會造成安全性威脅。 根據預設,ASP.NET Web 網頁會驗證使用者輸入未包含指令碼或 HTML 項目。 如需詳細資訊,請參閱 Script Exploits Overview (指令碼攻擊概觀)。
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
public class SimpleControl:UserControl
{
public TextBox name;
public Label output;
public Button myButton;
public void myButton_Click(object sender, EventArgs e)
{
output.Text = "Hello, " + name.Text + ".";
}
}
Imports System.Web.UI
Imports System.Web.UI.WebControls
Public Class SimpleControl
Inherits UserControl
Public name As TextBox
Public output As Label
Public myButton As Button
Public Sub myButton_Click(sender As Object, e As EventArgs)
output.Text = "Hello, " + name.Text + "."
End Sub
End Class
下列範例是 .ascx 檔案中包含的標記。 您可以使用 SimpleControl
上一個範例中定義的 類別,作為這個 .ascx 檔案中標記的程式代碼後置類別。
<%@ control inherits = "SimpleControl" src = "SimpleControl.cs" %>
<table style="background-color:yellow;font: 10pt verdana;border-width:1;border-style:solid;border-color:black;" cellspacing="15">
<tr>
<td><b>Enter your name here: </b></td>
<td><ASP:TextBox id="name" runat="server"/></td>
</tr>
<tr>
<td><b><ASP:Label id="output" runat="server"/></b></td>
</tr>
<tr>
<td></td>
<td><asp:button id="myButton" text="Submit" OnClick="myButton_Click" runat="server" /></td>
</tr>
</table>
<%@ control inherits = "SimpleControl" src = "SimpleControl.vb" %>
<table style="background-color: yellow; font: 10pt verdana;border-width:1;border-style:solid;border-color:black;" cellspacing="15">
<tr>
<td><b>Enter your name here: </b></td>
<td><ASP:TextBox id="name" runat="server"/></td>
</tr>
<tr>
<td><b><ASP:Label id="output" runat="server"/></b></td>
</tr>
<tr>
<td></td>
<td><asp:button text="Submit" OnClick="myButton_Click" runat="server" /></td>
</tr>
</table>
備註
類別 UserControl 與擴展名為 .ascx 的檔案相關聯。 這些檔案會在運行時間編譯為 UserControl 物件,並在伺服器記憶體中快取。
您可以在另一個 .ascx 檔案中宣告一個 .ascx 檔案,以巢狀化使用者控件,包括網頁窗體頁面中的後者。
使用者控制項包含在網頁窗體頁面 ASP.NET,並提供 Web 開發人員輕鬆擷取常用 Web UI 的方式。 它們會以類似 Page 物件的方式具現化和快取。 不過,與頁面不同,使用者控件無法獨立呼叫。 他們只能從頁面或其他包含它們的使用者控件呼叫。
如果您想要使用程式代碼後置技術建立使用者控件,請衍生自這個類別。 如果您使用這項技術來開發 Web Forms 頁面,建議您這麼做。
如需以宣告方式建立使用者控件的資訊,請參閱 ASP.NET 使用者控件。
建構函式
UserControl() |
初始化 UserControl 類別的新執行個體。 |
屬性
Adapter |
針對控制項取得瀏覽器的特定配置器。 (繼承來源 Control) |
Application |
取得目前 Web 要求的 Application 物件。 |
AppRelativeTemplateSourceDirectory |
取得或設定包含了此控制項之 Page 或 UserControl 物件的相對應用程式虛擬目錄。 (繼承來源 Control) |
AppRelativeVirtualPath |
取得或設定要在其中剖析和編譯控制項之檔案的應用程式相對虛擬目錄路徑。 (繼承來源 TemplateControl) |
Attributes |
取得 .aspx 檔案內的使用者控制項標記中所宣告的所有屬性 (Attribute) 名稱和值配對的集合。 |
AutoHandlers |
已淘汰.
AutoHandlers 屬性在 ASP.NET 2.0 中已被取代。 此屬性由產生的類別使用,並不適用於您的程式碼中。 (繼承來源 TemplateControl) |
BindingContainer |
取得包含了此控制項之資料繫結的控制項。 (繼承來源 Control) |
Cache |
取得 Cache 物件,這個物件與包含使用者控制項的應用程式關聯。 |
CachePolicy |
取得這個使用者控制項之快取參數集合的參考。 |
ChildControlsCreated |
取得值,指出是否已經建立伺服器控制項的子控制項。 (繼承來源 Control) |
ClientID |
取得 ASP.NET 所產生之 HTML 標記的控制項識別碼。 (繼承來源 Control) |
ClientIDMode |
取得或設定用來產生 ClientID 屬性值的演算法。 (繼承來源 Control) |
ClientIDSeparator |
取得字元值,表示在 ClientID 屬性中所使用的分隔字元。 (繼承來源 Control) |
Context |
取得與目前 Web 要求的伺服器控制項關聯的 HttpContext 物件。 (繼承來源 Control) |
Controls |
取得 ControlCollection 物件,表示 UI 階層架構中指定之伺服器控制項的子控制項。 (繼承來源 Control) |
DataItemContainer |
如果命名容器實作 IDataItemContainer,則取得命名容器的參考。 (繼承來源 Control) |
DataKeysContainer |
如果命名容器實作 IDataKeysControl,則取得命名容器的參考。 (繼承來源 Control) |
DesignMode |
取得值,指出控制項是否正用於設計介面上。 (繼承來源 Control) |
EnableTheming |
取得或設定布林值,指出主題是否套用至衍生自 TemplateControl 類別的控制項。 (繼承來源 TemplateControl) |
EnableViewState |
取得或設定值,該值表示伺服器控制項是否對要求的用戶端而言保持其檢視狀態,以及它包含的任何子控制項狀態。 (繼承來源 Control) |
Events |
取得控制項事件處理常式委派 (Delegate) 的清單。 這個屬性是唯讀的。 (繼承來源 Control) |
HasChildViewState |
取得值,指出目前伺服器控制項的子控制項是否有任何已儲存的檢視狀態設定。 (繼承來源 Control) |
ID |
取得或設定指派給伺服器控制項的程式設計識別項。 (繼承來源 Control) |
IdSeparator |
取得用來分隔控制項識別項的字元。 (繼承來源 Control) |
IsChildControlStateCleared |
取得值,指出這個控制項中所包含的控制項是否有控制項狀態。 (繼承來源 Control) |
IsPostBack |
取得值,指出使用者控制項是否為回應用戶端回傳而被載入,或者是否為第一次被載入與存取。 |
IsTrackingViewState |
取得值,指出伺服器控制項是否正在儲存檢視狀態的變更。 (繼承來源 Control) |
IsViewStateEnabled |
取得值,指出這個控制項是否已啟用檢視狀態。 (繼承來源 Control) |
LoadViewStateByID |
取得值,指出控制項是否依 ID (而不是索引) 參與載入其檢視狀態。 (繼承來源 Control) |
NamingContainer |
取得伺服器控制項命名容器的參考,其建立唯一命名空間,在具有相同 ID 屬性值的伺服器控制項之間作區別。 (繼承來源 Control) |
Page |
取得含有伺服器控制項的 Page 執行個體的參考。 (繼承來源 Control) |
Parent |
在網頁控制階層架構中取得伺服器控制項之父控制項的參考。 (繼承來源 Control) |
RenderingCompatibility |
取得值,這個值會指定將與呈現 HTML 相容的 ASP.NET 版本。 (繼承來源 Control) |
Request |
取得目前 Web 要求的 HttpRequest 物件。 |
Response |
取得目前 Web 要求的 HttpResponse 物件。 |
Server |
取得目前 Web 要求的 HttpServerUtility 物件。 |
Session |
取得目前 Web 要求的 HttpSessionState 物件。 |
Site |
當呈現在設計介面上時,取得裝載目前控制項之容器的資訊。 (繼承來源 Control) |
SkinID |
取得或設定要套用至控制項的面板。 (繼承來源 Control) |
SupportAutoEvents |
取得值,指出 TemplateControl 控制項是否支援自動事件。 (繼承來源 TemplateControl) |
TemplateControl |
取得或設定包含了此控制項之樣板的參考。 (繼承來源 Control) |
TemplateSourceDirectory |
取得包含目前伺服器控制項的 Page 或 UserControl 的虛擬目錄。 (繼承來源 Control) |
Trace |
取得目前 Web 要求的 TraceContext 物件。 |
UniqueID |
取得伺服器控制項唯一的、符合階層架構的識別項。 (繼承來源 Control) |
ValidateRequestMode |
取得或設定值,指出控制項是否對來自瀏覽器的用戶端輸入檢查潛在的危險值。 (繼承來源 Control) |
ViewState |
取得狀態資訊的字典,允許您在相同網頁的多個要求之間,儲存和還原伺服器控制項的檢視狀態。 (繼承來源 Control) |
ViewStateIgnoresCase |
取得值,指出 StateBag 物件是否不區分大小寫。 (繼承來源 Control) |
ViewStateMode |
取得或設定這個控制項的檢視狀態模式。 (繼承來源 Control) |
Visible |
取得或設定值,指出伺服器控制項是否會轉譯為頁面上的 UI。 (繼承來源 Control) |
方法
事件
AbortTransaction |
在使用者結束交易時發生。 (繼承來源 TemplateControl) |
CommitTransaction |
當交易完成時發生。 (繼承來源 TemplateControl) |
DataBinding |
發生於伺服器控制項繫結至資料來源時。 (繼承來源 Control) |
Disposed |
發生於伺服器控制項從記憶體釋放時,這是在要求 ASP.NET 網頁時,伺服器控制項生命週期的最後階段。 (繼承來源 Control) |
Error |
當擲回未處理的例外狀況時發生。 (繼承來源 TemplateControl) |
Init |
發生於初始化伺服器控制項時,是其生命週期中的第一個步驟。 (繼承來源 Control) |
Load |
發生於載入伺服器控制項至 Page 物件時。 (繼承來源 Control) |
PreRender |
在 Control 物件載入之後但在呈現之前發生。 (繼承來源 Control) |
Unload |
發生於伺服器控制項從記憶體卸載時。 (繼承來源 Control) |
明確介面實作
擴充方法
FindDataSourceControl(Control) |
傳回與指定之控制項的資料控制項相關聯的資料來源。 |
FindFieldTemplate(Control, String) |
傳回在指定之控制項的命名容器中所指定資料行的欄位樣板。 |
FindMetaTable(Control) |
傳回包含資料控制項的中繼資料表物件。 |
GetDefaultValues(INamingContainer) |
取得所指定資料控制項的預設值集合。 |
GetMetaTable(INamingContainer) |
取得所指定資料控制項中的資料表中繼資料。 |
SetMetaTable(INamingContainer, MetaTable) |
設定所指定資料控制項中的資料表中繼資料。 |
SetMetaTable(INamingContainer, MetaTable, IDictionary<String,Object>) |
設定所指定資料控制項的資料表中繼資料及預設值對應。 |
SetMetaTable(INamingContainer, MetaTable, Object) |
設定所指定資料控制項的資料表中繼資料及預設值對應。 |
TryGetMetaTable(INamingContainer, MetaTable) |
判斷資料表中繼資料是否可供使用。 |
EnableDynamicData(INamingContainer, Type) |
針對指定的資料控制項啟用動態資料行為。 |
EnableDynamicData(INamingContainer, Type, IDictionary<String,Object>) |
針對指定的資料控制項啟用動態資料行為。 |
EnableDynamicData(INamingContainer, Type, Object) |
針對指定的資料控制項啟用動態資料行為。 |