Ejemplo de propiedad personalizada
En el siguiente ejemplo se combinan todos los elementos descritos en Tipos de propiedades. Se define una propiedad de cadena, una propiedad de entero, una propiedad de enumeración y una propiedad de clase. También se muestra cómo se definen las propiedades cuando el control se utiliza de forma declarativa en una página ASP.NET. Para generar el ejemplo, vea las instrucciones en Ejemplos de control de servidor.
using System;
using System.ComponentModel;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace CustomControls
{
// The Position enumeration.
public enum Position
{
Forward = 0,
Mid = 1,
Defence = 2,
Goalee = 3,
}
// The Address class.
public class Address
{
private String street = null;
private String city = null;
private String state = null;
private String zip = null;
// The Street property.
public String Street
{
get
{
return street;
}
set
{
street = value;
}
}
// The City property.
public String City
{
get
{
return city;
}
set
{
city = value;
}
}
// The State property.
public String State
{
get
{
return state;
}
set
{
state = value;
}
}
// The Zip property.
public String Zip
{
get
{
return zip;
}
set
{
zip = value;
}
}
}
// SoccerPlayer is control that exposes simple, enumeration, and
// class properties.
public class SoccerPlayer : Control
{
private String name = null;
private Position position;
private Address address = new Address();
private int age = 0;
// Age is a simple property of type integer.
// The element in square brackets is an attribute
// that provides additional information at design time.
[Description("The age of the player")]
public int Age
{
get
{
return age;
}
set
{
age = value;
}
}
// Name is a simple property of type String.
[Description("The name of the player")]
public String Name
{
get
{
return name;
}
set
{
name = value;
}
}
// PlayerPosition is an enumeration property whose
// type is the Position enumeration.
[Description("The position of the player on the field.")]
public Position PlayerPosition
{
get
{
return position;
}
set
{
position = value;
}
}
// PlayerAddress is a complex property whose
// type is the class Address. Address has four
// properties, Street, City, State, and Zip. These become
// subproperties of SoccerPlayer.
public Address PlayerAddress
{
get
{
return address;
}
}
//The Render method is inherited from Control.
//
protected override void Render(HtmlTextWriter output)
{
output.Write("Name: " + Name + "<br>");
output.Write("Age: " + Age + "<br>");
output.Write("PlayerPosition: " + PlayerPosition + "<br>");
output.Write("Address: " + PlayerAddress.Street + ", " + PlayerAddress.City + ", " +
PlayerAddress.State + ", " + PlayerAddress.Zip + "<br>");
}
}
}
[Visual Basic]
Option Strict
Option Explicit
Imports System
Imports System.ComponentModel
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Namespace CustomControls
' The Position enumeration.
Public Enum Position
Forward = 0
Mid = 1
Defence = 2
Goalee = 3
End Enum
' The Address class.
Public Class Address
Private _street As String = Nothing
Private _city As String = Nothing
Private _state As String = Nothing
Private _zip As String = Nothing
' The Street property.
Public Property Street() As String
Get
Return _street
End Get
Set
_street = value
End Set
End Property
' The City property.
Public Property City() As String
Get
Return _city
End Get
Set
_city = value
End Set
End Property
' The State property.
Public Property State() As String
Get
Return _state
End Get
Set
_state = value
End Set
End Property
' The Zip property.
Public Property Zip() As String
Get
Return _zip
End Get
Set
_zip = value
End Set
End Property
End Class
' SoccerPlayer is control that exposes simple, enumeration, and
' class properties.
Public Class SoccerPlayer
Inherits Control
Private _name As String = Nothing
Private _position As Position
Private _address As New Address()
Private _age As Integer = 0
' Age is a simple property of type integer.
' The element in square brackets is an attribute
' that provides additional information at design time.
<Description("The age of the player")> _
Public Property Age() As Integer
Get
Return _age
End Get
Set
_age = value
End Set
End Property
' Name is a simple property of type String.
<Description("The name of the player")> _
Public Property Name() As String
Get
Return _name
End Get
Set
_name = value
End Set
End Property
' PlayerPosition is an enumeration property whose
' type is the Position enumeration.
<Description("The position of the player on the field.")> _
Public Property PlayerPosition() As Position
Get
Return _position
End Get
Set
_position = value
End Set
End Property
' PlayerAddress is a complex property whose
' type is the class Address. Address has four
' properties, Street, City, State, and Zip. These become
' subproperties of SoccerPlayer.
Public ReadOnly Property PlayerAddress() As Address
Get
Return _address
End Get
End Property
'The Render method is inherited from Control.
'
Protected Overrides Sub Render(output As HtmlTextWriter)
output.Write(("Name: " & Name & "<br>"))
output.Write(("Age: " & Age & "<br>"))
output.Write(("PlayerPosition: " & PlayerPosition & "<br>"))
output.Write(("Address: " & PlayerAddress.Street & ", " & _
PlayerAddress.City & ", " & PlayerAddress.State & ", " & _
PlayerAddress.Zip & "<br>"))
End Sub
End Class
End Namespace
Establecer propiedades de control de forma declarativa
En la siguiente página ASP.NET se utiliza el control SoccerPlayer
y se establecen las propiedades con sintaxis declarativa.
<%@ Register TagPrefix="Custom" Namespace="CustomControls" Assembly = "CustomControls" %>
<html>
<body>
The SoccerPlayer control has four properties of the following types:
string, integer, enumeration, and class.
<br>
<b>Name</b> is a simple property of type <b>String</b>.<br>
<b>Age</b> is a primitive property of type <b>integer</b>.<br>
<b>PlayerPosition</b> is a simple property of type <b>enumeration</b>.<br>
<b>PlayerAddress</b> is a complex property of type <b>Address</b>,
which is a <b>class</b> that itself has four
properties: <br> Street, City, State, and Zip.
These properties are called subproperties of SoccerPlayer.
<br>
Notice the syntax for setting the enumeration property and the subproperties.
<br><br>
<b>
<Custom:SoccerPlayer id = "Properties" Name = "Your Favorite Player's Name" Age = "20" PlayerPosition = "Forward"
PlayerAddress-Street = "100, Players Lane" PlayerAddress-City = "Soccer City"
PlayerAddress-State = "State" PlayerAddress-Zip = "000000" runat=server/>
</b>
</body>
</html>