Verwenden von ParseChildrenAttribute
ParseChildrenAttribute ist ein .NET Framework-Metadatenattribut, das auf Klassenebene angewendet wird. Es ermöglicht einem Steuerelement festzulegen, wie der Seitenparser geschachtelte Elemente innerhalb der Steuerelementtags interpretiert, wenn das Steuerelement deklarativ auf einer ASP.NET-Seite verwendet wird. ParseChildrenAttribute kann mit Hilfe benannter Argumente erstellt werden, die einem booleschen Flag und einer Standardeigenschaft des Steuerelements entsprechen. Einzelheiten zur Syntax dieses Attributs finden Sie unter System.Web.UI.ParseChildrenAttribute.
Das folgende Beispiel zeigt, wie ParseChildrenAttribute auf ein Steuerelement angewendet wird.
[ ParseChildren(ChildrenAsProperties = true)]
// Or apply as [ ParseChildren(true)].
public class TemplatedFirstControl : Control, INamingContainer {...}
[Visual Basic]
<ParseChildren(ChildrenAsProperties := True)> _
Public Class TemplatedFirstControl
Inherits Control
Implements INamingContainer
...
End Class
Ein Beispiel für ein Steuerelement, das mit ParseChildrenAttribute gekennzeichnet ist, finden Sie unter Beispiel für ein Steuerelement mit Vorlagen. Wenn TemplatedFirstControl
auf einer Seite deklarativ verwendet wird, müssen direkt untergeordnete Elemente innerhalb der Steuerelementtags den Eigenschaften von TemplatedFirstControl
entsprechen, wie im folgenden Beispiel demonstriert.
<%-- FirstTemplate is a property of TemplatedFirstControl. --%>
<%-- Custom is the tag prefix for TemplatedFirstControl on the page as defined in the <%@ Register %> directive. --%>
<Custom:TemplatedFirstControl id = "First" Text= "The time on the server is " runat=server>
<FirstTemplate>
<h3><font face="Verdana" color = "red"><%# Container.Text %> <%# Container.DateTime %>
</font></h3>
</FirstTemplate>
</Custom:TemplatedFirstControl>
In der folgenden Tabelle wird das Verwendungsmuster für ParseChildrenAttribute beschrieben.
Attributverwendung | Beschreibung |
---|---|
ParseChildrenAttribute(ChildrenAsProperties = true)
oder ParseChildren(true) |
Geschachtelte (untergeordnete) Elemente müssen Eigenschaften des Steuerelements entsprechen. Andere (nicht die Eigenschaften betreffende) Elemente und Literaltext zwischen den Steuerelementtags generieren einen Parserfehler.
Beispiele: Repeater und andere datengebundene Steuerelemente. |
ParseChildrenAttribute(ChildrenAsProperties = false)
oder ParseChildrenAttribute(false) oder ParseChildrenAttribute wird nicht auf das Steuerelement angewendet. |
Geschachtelte (untergeordnete) Elemente müssen ASP.NET-Serversteuerelementen entsprechen. Der Seitenparser erstellt das untergeordnete Steuerelement und ruft IParserAccessor.AddParsedSubObject für das Steuerelement auf. Die Standardimplementierung von AddParsedSubObject fügt die untergeordneten Steuerelemente zur Controls-Auflistung des Steuerelements hinzu. Der Seitenparser analysiert Literaltext zwischen Tags als Instanzen von LiteralControl.
Beispiel: Panel. |
ParseChildrenAttribute (ChildrenAsProperties = true, DefaultProperty = "PropertyName")
oder ParseChildrenAttribute(true, "PropertyName") |
Das Steuerelement muss eine öffentliche Eigenschaft mit der Bezeichnung PropertyName definieren. Geschachtelte (untergeordnete) Elemente müssen untergeordneten Elementen der PropertyName-Eigenschaft entsprechen.
Beispiele: HtmlTable, HtmlTableRow. Ein Beispiel finden Sie unter ParseChildrenAttribute-Beispiel. |
ParseChildrenAttribute(false, "PropertyName") | Der Seitenparser setzt diese Verwendung ParseChildrenAttribute(false) gleich. |
Hinweis System.Web.UI.WebControls.WebControl ist als ParseChildren(true) markiert. Ein benutzerdefiniertes von WebControl abgeleitetes Steuerelement erbt diese Attributmarkierung. Sie können das geerbte Attribut außer Kraft setzen, indem Sie das Attribut mit anderen Argumenten erneut anwenden.
Hinweis Wenn ControlBuilderAttribute zusätzlich zu ParseChildrenAttribute angewendet wird, kann es die in der Tabelle beschriebene Analyselogik ändern.
Siehe auch
Steuerelementanalyse, das ParseChildrenAttribute und Steuerelement-Generatoren | ParseChildrenAttribute-Beispiel