Syntax für benutzerdefinierte Serversteuerelemente
Aktualisiert: November 2007
Mit der Syntax für benutzerdefinierte Serversteuerelemente können Sie Benutzersteuerelemente und benutzerdefinierte Serversteuerelemente als Markupelemente in ASP.NET-Anwendungsdateien deklarieren, z. B. in Webseiten, Benutzersteuerelementen und Masterseiten. Die Syntax unterscheidet sich kaum von der allgemeinen Syntax zum Deklarieren von ASP.NET-Serversteuerelementen, außer dass für benutzerdefinierte Steuerelemente und Benutzersteuerelemente in der Regel ein eindeutiges Tagpräfix und ein Tagname deklariert werden müssen, die dem Steuerelement entsprechen.
<tagprefix:tagname id="OptionalID"
attributename="value"
eventname="eventhandlermethod"
runat="server" />
OR
<tagprefix:tagname id="OptionalID"
runat="server" />
Attribute
tagprefix
Ein Alias für den vollqualifizierten Namespace der auf der Seite verwendeten Markupelemente. Der Wert des Alias ist beliebig, bietet jedoch eine schnelle Möglichkeit, um das Markup eines benutzerdefinierten Steuerelements oder eines Benutzersteuerelements dem Namespace der anderen in einer ASP.NET-Datei deklarierten Markupelemente zuzuordnen.tagname
Bei einem benutzerdefinierten Steuerelement verweist tagname auf den Namen eines Typs, für den von ASP.NET eine Laufzeitinstanz erstellt wird. Bei einem Benutzersteuerelement verweist tagname auf die zugeordnete Quelldatei, die das Benutzersteuerelement definiert. Diese Datei definiert wiederum den Typ, für den von ASP.NET eine Instanz erstellt wird.id
Ein eindeutiger Bezeichner, der programmgesteuerte Verweise auf das Steuerelement ermöglicht.attributename
Der Name eines Attributs, das einer Eigenschaft des Steuerelements entspricht.value
Der dem Attribut (der Eigenschaft) zugewiesene Wert.eventname
Der Name eines Ereignisses im Steuerelement.eventhandlermethod
Der Name eines Ereignishandlers, der definiert wird, um das angegebene Ereignis für das Steuerelement zu behandeln.
Hinweise
Verwenden Sie die Syntax für benutzerdefinierte Serversteuerelemente, um Benutzersteuerelemente und benutzerdefinierte Serversteuerelemente innerhalb des Textteils einer ASP.NET-Webseite zu deklarieren. Damit die Syntax funktioniert, muss das Steuerelement auf der Seite oder in einer Konfigurationsdatei registriert werden (Sie können ein Steuerelement auf allen Seiten einer Anwendung registrieren, indem Sie es den <controls> der Datei Web.config hinzufügen). Sie können ein Steuerelement auf einer einzelnen Seite registrieren, indem Sie die @ Register-Direktive verwenden.
Das Starttag eines Elements für ein Benutzersteuerelement oder ein benutzerdefiniertes Steuerelement muss ein runat="server"-Attribut-Wert-Paar enthalten. Um programmgesteuertes Verweisen auf das Steuerelement zu aktivieren, können Sie optional einen eindeutigen Wert für das id-Attribut angeben.
Alle in einem Benutzersteuerelement oder benutzerdefinierten Serversteuerelement erstellten Eigenschaften können deklarativ im Starttag des Serversteuerelements verfügbar gemacht werden. Deklarieren Sie die Eigenschaft dafür einfach als Attribut, und weisen Sie diesem einen Wert zu. Wenn Sie z. B. ein benutzerdefiniertes Textfeld-Steuerelement mit einer width-Eigenschaft erstellen, können Sie durch Deklarieren von width="50" im Starttag des Steuerelements die Anzeigebreite des Serversteuerelements auf 50 Pixel festlegen.
In einigen Fällen können Attribute Objekte mit eigenen Eigenschaften sein. Fügen Sie in diesem Fall den Eigenschaftennamen in die Deklaration ein. Wenn Sie z. B. ein benutzerdefiniertes Textfeld-Steuerelement mit einem font-Attribut erstellen, kann dieses eine name-Eigenschaft enthalten. Anschließend können Sie die Eigenschaft im öffnenden Tag des Serversteuerelements als font-name="Arial" deklarieren. Weitere Informationen über das Entwickeln von benutzerdefinierten Serversteuerelementen mit Eigenschaften finden Sie unter Einfache Eigenschaften und untergeordnete Eigenschaften für Serversteuerelemente.
Sie können Ereignisse in benutzerdefinierten Serversteuerelementen und Benutzersteuerelementen wie in ASP.NET-Serversteuerelementen deklarieren. Geben Sie die Ereignisbindung im Starttag des Serversteuerelements mit einem Attribut und einem Wert an. Weitere Informationen über das Erstellen von benutzerdefinierten Serversteuerelementen, die Ereignisse unterstützen, finden Sie unter Serverereignisbehandlung auf ASP.NET-Webseiten.
Sie können benutzerdefinierte Serversteuerelemente verwenden und entwickeln, die Inlinevorlagen unterstützen. Ausführliche Informationen zum Deklarieren von Vorlagen in einem benutzerdefinierten Serversteuerelement finden Sie unter Syntax für Inlinevorlagen für Serversteuerelemente. Informationen über das Erstellen benutzerdefinierter Serversteuerelemente, die Inlinevorlagen unterstützen, finden Sie unter Gewusst wie: Erstellen von vorlagenbasierten ASP.NET-Benutzersteuerelementen.
Beispiel
Das folgende Codebeispiel veranschaulicht, wie Sie ein benutzerdefiniertes Serversteuerelement auf einer ASP.NET Web-Webseite registrieren und deklarieren. Im ersten Codeabschnitt wird eine öffentliche Klasse erstellt, die sich von der Button-Klasse ableitet. Bei dem zweiten Teil des Codes handelt es sich um eine Webseite, die die benutzerdefinierte Schaltfläche hostet. Beachten Sie, dass die Webseite die @ Register-Direktive verwendet, um den Namespace für das Steuerelement zu registrieren und das tagprefix-Attribut festzulegen. Mit dem tagprefix-Wert und dem Klassennamen des Steuerelements, getrennt durch einen Doppelpunkt (:), wird dann auf der Seite auf das Steuerelement verwiesen.
Wenn Sie das Codebeispiel ausführen möchten, müssen Sie dieses benutzerdefinierte Steuerelement kompilieren. Sie können den Quellcode explizit kompilieren und die daraus entstehende Assembly im Ordner Bin der Website oder im globalen Assemblycache ablegen. Sie können den Quellcode jedoch auch im Ordner App_Code der Site ablegen, wo er dynamisch zur Laufzeit kompiliert wird. Dieses Codebeispiel verwendet die dynamische Kompilierung, weshalb die @ Register-Direktive in der Seite kein Assembly-Attribut deklarieren muss (da die Quelle zur Laufzeit dynamisch kompiliert wird). Eine exemplarische Vorgehensweise zum Veranschaulichen der Kompilierung finden Sie unter Exemplarische Vorgehensweise: Entwickeln und Verwenden eines benutzerdefinierten Serversteuerelements.
Sicherheitshinweis: |
---|
Dieses Beispiel enthält ein Textfeld, das eine Benutzereingabe akzeptiert. Diese stellt ein potenzielles Sicherheitsrisiko dar. Standardmäßig stellt die ASP.NET-Seite sicher, dass die Benutzereingabe keine Skript- oder HTML-Elemente enthält. Weitere Informationen finden Sie unter Übersicht über Skriptangriffe. |
// A custom Button control to reference in the page.
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Security.Permissions
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace Samples.AspNet.CS.Controls
{
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public class CustomButton : Button
{
public CustomButton()
{
this.Text = "Click Here";
}
}
}
<!-- A page that references the custom control. -->
<%@Page language="C#" %>
<!-- This directive does not require the assembly attribute
because the source file is in the App_Code directory,
so it gets dynamically compiled with the page. -->
<%@ Register TagPrefix="custom" namespace="Samples.AspNet.CS.Controls" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<script runat="server">
private void custButton_Click(Object sender, EventArgs e)
{
TextBox.BackColor = System.Drawing.Color.Green;
TextBox.Text = "You clicked the button";
}
</script>
<body>
<form id="Form1" runat=server>
Here is the custom button.<br>
<custom:CustomButton runat="server" id="custButton" onclick="custButton_Click" />
<br>
<br>
<asp:TextBox id = "TextBox" Text="Click the button"
Width = "200" BackColor="Cyan" runat="server" />
<br>
</form>
</body>
</html>
' A custom Button control to reference in the page.
Imports System
Imports System.Collections
Imports System.ComponentModel
Imports System.Drawing
Imports System.Security.Permissions
Imports System.Web
Imports System.Web.Configuration
Imports System.Data.Sql
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Namespace Samples.AspNet.VB.Controls
<AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
Public Class CustomButton
Inherits Button
Public Sub New()
Me.Text = "Click Here"
End Sub
End Class
End Namespace
<!-- A page that references the custom control. -->
<%@ Page Language="VB" %>
<!-- This directive does not require the assembly attribute
because the source file is in the App_Code directory,
so it gets dynamically compiled with the page. -->
<%@ Register TagPrefix="custom" namespace="Samples.AspNet.VB.Controls" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<script runat="server">
Sub custButton_Click(ByVal sender As Object, _
ByVal e As EventArgs)
TextBox.BackColor = Drawing.Color.Green
TextBox.Text = "You clicked the button."
End Sub
</script>
<body>
<form id="Form1" runat=server>
Here is the custom button.<br>
<custom:CustomButton runat="server" id="custButton" onclick="custButton_Click" />
<br>
<br>
<asp:TextBox id = "TextBox" Text="Click the button"
Width = "200" BackColor="Cyan" runat="server" />
<br>
</form>
</body>
</html>