ControlBuilderAttribute-Klasse
Gibt eine ControlBuilder-Klasse an, mit der im ASP.NET-Parser ein benutzerdefiniertes Steuerelement erstellt werden kann. Diese Klasse kann nicht vererbt werden.
Namespace: System.Web.UI
Assembly: System.Web (in system.web.dll)
Syntax
'Declaration
<AttributeUsageAttribute(AttributeTargets.Class)> _
Public NotInheritable Class ControlBuilderAttribute
Inherits Attribute
'Usage
Dim instance As ControlBuilderAttribute
[AttributeUsageAttribute(AttributeTargets.Class)]
public sealed class ControlBuilderAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Class)]
public ref class ControlBuilderAttribute sealed : public Attribute
/** @attribute AttributeUsageAttribute(AttributeTargets.Class) */
public final class ControlBuilderAttribute extends Attribute
AttributeUsageAttribute(AttributeTargets.Class)
public final class ControlBuilderAttribute extends Attribute
Hinweise
Dieses Attribut gibt den Type des Generators, der beim Erstellen eines benutzerdefinierten Steuerelements zu verwenden ist, wie im folgenden Codebeispiel an:
[ControlBuilderAttribute(typeof(ControlBuilderType))]
Beispiel
Im folgenden Codebeispiel wird eine benutzerdefinierte Auswahlliste erstellt, mit der eine Meldung auf der Grundlage der zur Laufzeit definierten SelectedIndex
-Werte und Message
-Werte angezeigt wird. Die folgende Befehlszeile wird zum Erstellen der ausführbaren Datei verwendet.
vbc /r:System.dll /r:System.Web.dll /r:System.Drawing.dll /t:library /out:myWebAppPath/Bin/vb_MyControlBuilderAtt.dll ControlBuilderAtt.vb
csc /t:library /out:myWebAppPath/Bin/cs_MyControlBuilderAtt.dll ControlBuilderAtt.cs
'File name: controlBuilderAttribute.vb.
Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Collections
Namespace CustomControls
Public Class MyVB_Item: Inherits Control
Private _message As String
Public Property Message() As String
Get
Return _message
End Get
Set
_message = value
End Set
End Property
End Class 'MyVB_Item
Public Class VB_CustomParseControlBuilder: Inherits ControlBuilder
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Public Overrides Function GetChildControlType(TagName As String, attributes As IDictionary) As Type
If (TagName = "customitem") Then
Return GetType(CustomControls.MyVB_Item)
End If
Return Nothing
End Function 'GetChildControlType
End Class 'CustomParseControlBuilder
<ControlBuilderAttribute(GetType(VB_CustomParseControlBuilder))> Public Class MyVB_CustomParse: Inherits Control
Private _items As New ArrayList
Private _selectedIndex As Integer = 0
Public Property SelectedIndex() As Integer
Get
Return _selectedIndex
End Get
Set
_selectedIndex = value
End Set
End Property
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Protected Overrides Sub AddParsedSubObject(obj As Object)
If TypeOf obj Is MyVB_Item Then
_items.Add(obj)
End If
End Sub 'AddParsedSubObject
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Protected Overrides Sub Render(output As HtmlTextWriter)
output.Write(("<span style='background-color:aqua; color:red; font:8pt tahoma, verdana;'><b>" + CType(_items(SelectedIndex), MyVB_Item).Message + "</b></span>"))
End Sub 'Render
End Class 'MyVB_CustomParse
End Namespace 'CustomControls
/* File name: controlBuilderAttribute.cs. */
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;
namespace CustomControls
{
public class MyCS_Item : Control
/* Class name: MyCS_Item.
* Defines the child control class.
*/
{
private String _message;
public String Message
{
get
{
return _message;
}
set
{
_message = value;
}
}
}
public class CustomParseControlBuilder : ControlBuilder
/* Class name: CustomParserControlBuilder.
* Defines the functions and data to be used in building custom controls.
* This class is referenced using the ControlBuilderAttribute class. See class below.
*/
{
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
public override Type GetChildControlType(String tagName, IDictionary attributes)
{
if (String.Compare(tagName, "customitem", true) == 0)
{
return typeof(MyCS_Item);
}
return null;
}
}
[
ControlBuilderAttribute(typeof(CustomParseControlBuilder))
]
public class MyCS_CustomParse : Control
/* Class name: MyCS_CustomParse.
* Performs custom parsing of a MyCS_CustomParse control type
* child control.
* If the child control is of the allowed type, it is added to an
* array list. This list is accessed, using the container control attribute
* SelectedIndex, to obtain the related child control Message attribute to be displayed.
*/
{
private ArrayList _items = new ArrayList();
private int _selectedIndex = 0;
public int SelectedIndex
{
get
{
return _selectedIndex;
}
set
{
_selectedIndex = value;
}
}
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
protected override void AddParsedSubObject(Object obj)
/* Function name: AddParsedSubObject.
* Updates the array list with the allowed child objects.
* This function is called during the parsing of the child controls and
* after the GetChildControlType function defined in the associated control
* builder class.
*/
{
if (obj is MyCS_Item)
{
_items.Add(obj);
}
}
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
protected override void Render(HtmlTextWriter output)
/* Function name: Render.
* Establishes the rules to render the built control. In this case, a message is
* rendered that is a function of the parent control SelectedIndex attribute and
* the related child Message attribute.
*/
{
if (SelectedIndex < _items.Count)
{
output.Write("<span style='background-color:aqua; color:red; font:8pt tahoma, verdana;'><b>" +
((MyCS_Item) _items[SelectedIndex]).Message + "</b></span>" );
}
}
}
}
package CustomControls;
/* File name: controlBuilderAttribute.jsl. */
import System.*;
import System.Web.*;
import System.Web.UI.*;
import System.Web.UI.WebControls.*;
import System.Collections.*;
public class MyJSL_Item extends Control
{
/* Class name: MyJSL_Item.
Defines the child control class.
*/
private String _message;
/** @property
*/
public String get_Message()
{
return _message;
} //get_Message
/** @property
*/
public void set_Message(String value)
{
_message = value;
} //set_Message
} //MyJSL_Item
public class CustomParseControlBuilder extends ControlBuilder
{
/* Class name: CustomParserControlBuilder.
Defines the functions and data to be used in building custom controls.
This class is referenced using the ControlBuilderAttribute class.
See class below.
*/
public Type GetChildControlType(String tagName, IDictionary attributes)
{
if (String.Compare(tagName, "customitem", true) == 0) {
return MyJSL_Item.class.ToType();
}
return null;
} //GetChildControlType
} //CustomParseControlBuilder
/** @attribute ControlBuilderAttribute(CustomParseControlBuilder.class)
*/
public class MyJSL_CustomParse extends Control
{
/* Class name: MyJSL_CustomParse.
Performs custom parsing of a MyJSL_CustomParse control type
child control.
If the child control is of the allowed type, it is added to an
array list. This list is accessed, using the container control attribute
SelectedIndex, to obtain the related child control Message attribute
to be displayed.
*/
private ArrayList _items = new ArrayList();
private int _selectedIndex = 0;
/** @property
*/
public int get_SelectedIndex()
{
return _selectedIndex;
} //get_SelectedIndex
/** @property
*/
public void set_SelectedIndex(int value)
{
_selectedIndex = value;
} //set_SelectedIndex
protected void AddParsedSubObject(Object obj)
{
/* Function name: AddParsedSubObject.
Updates the array list with the allowed child objects.
This function is called during the parsing of the child controls and
after the GetChildControlType function defined in the associated control
builder class.
*/
if (obj instanceof MyJSL_Item) {
_items.Add(obj);
}
} //AddParsedSubObject
protected void Render(HtmlTextWriter output)
{
/* Function name: Render.
Establishes the rules to render the built control. In this case,
a message is rendered that is a function of the parent control
SelectedIndex attribute and the related child Message attribute.
*/
if (get_SelectedIndex() < _items.get_Count()) {
output.Write("<span style='background-color:aqua; color:red;"
+ " font:8pt tahoma, verdana;'><b>"
+ ((MyJSL_Item)_items.get_Item(get_SelectedIndex())).get_Message()
+ "</b></span>");
}
} //Render
} //MyJSL_CustomParse
Im folgenden Beispiel wird das oben erstellte benutzerdefinierte Steuerelement verwendet. Insbesondere werden damit zur Laufzeit die SelectedIndex
-Werte und Message
-Werte zugewiesen, um die wiederzugebende Meldung zu bestimmen. Beachten Sie, dass die in der Register-Direktive dargestellten Werte die vorherige Befehlszeile widerspiegeln.
<%@ Register TagPrefix="custom" Assembly="myControlBuilderAtt" Namespace="CustomControls" %>
<h4>Using ControlBuilderAttribute Class<h4>
<form runat="server">
<custom:MyVB_CustomParse SelectedIndex="3" runat=server>
<customitem Message="Visual Basic version. Item One selected"/>
<customitem Message="Visual Basic version. Item Two selected"/>
<customitem Message="Visual Basic version. Item Three selected"/>
<customitem Message="Visual Basic version. Item Four selected"/>
</custom:MyVB_CustomParse>
</form>
<%@ Register TagPrefix="custom" Assembly="myControlBuilderAtt" Namespace="CustomControls" %>
<h4>Using ControlBuilderAttribute Class<h4>
<form runat="server">
<custom:MyCS_CustomParse SelectedIndex="2" runat=server>
<customitem Message="C# version. Item One selected"/>
<customitem Message="C# version. Item Two selected"/>
<customitem Message="C# version. Item Three selected"/>
<customitem Message="C# version. Item Four selected"/>
</custom:MyCS_CustomParse>
</form>
Vererbungshierarchie
System.Object
System.Attribute
System.Web.UI.ControlBuilderAttribute
Threadsicherheit
Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Plattformen
Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
ControlBuilderAttribute-Member
System.Web.UI-Namespace
Attribute