Tipos de propiedades
En los siguientes ejemplos se muestra cómo definir las propiedades primitivas (incluidas las propiedades de enumeración) y las propiedades de clase.
Nota En .NET Framework, los tipos de valor como Boolean, Byte, Char, Double, Enum, Intnn, etc. se asignan a los tipos primitivos en lenguajes orientados a Common Language Runtime. Para obtener más información, vea la documentación del lenguaje de programación.
Aunque String es un tipo de referencia, se incluye entre los tipos primitivos en esta descripción ya que la sintaxis para obtener acceso a las propiedades String en las páginas ASP.NET es idéntica a la de los tipos primitivos.
El tipo de una propiedad de clase es de referencia.
Propiedades primitivas
El fragmento de código siguiente define una propiedad primitiva denominada Number.
// The private data member for the Number property.
private int number = 0;
//The description attribute contains a brief description of
//the property that is displayed
//below the property browser when the user clicks on a
//property.
//
[Description("A nonnegative integer")]
//The Number property that maps to the field number.
//
public int Number{
//The accessor methods perform other program logic
//in addition to setting or returning the property.
//
get {
if (number < 0) return 0;
return number;
}
set {
if (value < 0) number = 0;
else number = value;
}
}
[Visual Basic]
' The private data member for the Number property.
Private _number As Integer = 0
'The description attribute contains a brief description of
'the property that is displayed
'below the property browser when the user clicks on a
'property.
'
<Description("A nonnegative integer")> _
Public Property Number() As Integer
'The Number property that maps to the field number.
'
'The accessor methods perform other program logic
'in addition to setting or returning the property.
'
Get
If _number < 0 Then
Return 0
End If
Return _number
End Get
Set
If value < 0 Then
_number = 0
Else
_number = value
End If
End Set
End Property
En el siguiente ejemplo se muestra la sintaxis de ASP.NET para definir de forma declarativa una propiedad primitiva (que no sea de enumeración) y se define la propiedad Text en una instancia del control System.Web.UI.WebControls.Button.
<asp:Button Text = "MyButton" runat = server/>
El analizador de páginas ASP.NET convierte la cadena especificada en el tipo de la propiedad. En este ejemplo, no hace falta conversión alguna ya que la propiedad Text es de tipo String.
Propiedades de enumeración
Cuando la propiedad es de tipo enumeración, la sintaxis de definición es igual que la de otros tipos de propiedades primitivas; sin embargo, la sintaxis de página para establecer la propiedad es diferente. El fragmento de código siguiente define una enumeración denominada Position
.
// The Position enumeration.
public enum Position
{
Forward = 0,
Mid = 1,
Defence = 2,
Goalee = 3,
}
[Visual Basic]
' The Position enumeration.
Public Enum Position
Forward = 0
Mid = 1
Defence = 2
Goalee = 3
End Enum
El fragmento de código siguiente muestra un control (SoccerPlayer
) que expone una propiedad de tipo Position
.
public class SoccerPlayer : Control
{
private Position position;
...
// 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;
}
}
...
}
[Visual Basic]
Public Class SoccerPlayer
Inherits Control
Private _position As Position
...
' 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
...
End Class
En el siguiente ejemplo se muestra la sintaxis de ASP.NET para definir de forma declarativa una propiedad de enumeración y se define la propiedad TextMode en una instancia del control System.Web.UI.WebControls.TextBox.
<asp:TextBox TextMode = "MultiLine" runat = server/>
El analizador de páginas ASP.NET convierte la cadena especificada en el valor de enumeración correspondiente, en este caso TextBoxMode.MultiLine.
Si la propiedad es de tipo enumeración, sus valores se muestran en una lista desplegable cuando el usuario hace clic en ella, en el examinador de propiedades de un diseñador visual como Visual Studio.NET.
Propiedades de clase
Si una clase A tiene una propiedad cuyo tipo es la clase B, las propiedades de B (si existen) serán las subpropiedades de A.
El fragmento de código siguiente define una clase denominada Address
que expone cuatro propiedades, todas de tipo String.
// 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{...} set{...}}
// The City property.
public string City {get{...} set{...}}
// The State property.
public string State {get{...} set{...}}
// The Zip property.
public string Zip {get{...} set{...}}
}
[Visual Basic]
' 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 ""
End Get
Set
_street = value
End Set
End Property
' The City property.
Public Property City() As String
Get
Return ""
End Get
Set
_city = value
End Set
End Property
' The State property.
Public Property State() As String
Get
Return ""
End Get
Set
_state = value
End Set
End Property
' The Zip property.
Public Property Zip() As String
Get
Return ""
End Get
Set
_zip = value
End Set
End Property
End Class
El fragmento de código siguiente define un control denominado SoccerPlayer
que expone una propiedad cuyo tipo es la clase Address
.
public class SoccerPlayer : Control
{
private Address address = new Address();
// PlayerAddress is 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;
}
// Note that the set accessor is not defined.
// The get accessor provides a handle to a PlayerAddress
// instance that can be used to set a subproperty such as
// PlayerAddress.Street.
}
}
[Visual Basic]
Public Class SoccerPlayer
Inherits Control
Private address As New Address()
' PlayerAddress is 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
' Note that the set accessor is not defined.
' The get accessor provides a handle to a PlayerAddress
' instance that can be used to set a subproperty such as
' PlayerAddress.Street.
End Property
End Class
ASP.NET tiene una sintaxis especial para establecer subpropiedades. En el siguiente ejemplo se definen de forma declarativa las subpropiedades Font.Color y Font.Size en el control System.Web.UI.WebControls.Button. El guión (-) denota una subpropiedad.
<asp:Button Font-Color="red" Font-Size="3" runat=server/>
En un diseñador como Visual Studio.NET, se puede expandir una propiedad de clase para mostrar sus subpropiedades.
ASP.NET también permite el uso de una sintaxis anidada para las propiedades, mediante la cual las propiedades se pueden declarar como elementos secundarios dentro de las etiquetas de un control. Para permitir esta sintaxis, se debe marcar un control como ParseChildrenAttribute(true). Para obtener más información, vea Utilizar ParseChildrenAttribute. System.Web.UI.WebControl se marca como ParseChildrenAttribute(true). Los controles derivados de WebControl heredan su lógica de análisis predeterminada.
Nota Las propiedades definidas en estos ejemplos no se almacenan durante las acciones de ida y vuelta en el cliente. Para definir las propiedades que se almacenan, hay que utilizar la propiedad ViewState de un control, como se describe en Mantener el estado de un control.