Properties in ASP.NET Server Controls

Properties are similar to fields but have accessor methods. You should expose properties instead of public fields from your controls because properties allow data hiding, can be versioned, and are supported by visual designers such as Visual Studio .NET. The accessor functions can perform additional program logic in addition to setting or retrieving a property. If you are not familiar with properties, see Properties Overview.

Properties Inherited from Control

For a complete listing of the properties that a control inherits from the Control class, see System.Web.UI.Control. The following list describes some of the commonly accessed properties.

  • Controls — The collection of a control's child controls.
  • ID — A user-supplied identifier for a control.
  • Page — The page that contains the control.
  • Parent — The control whose Controls collection a control belongs to. (Control A is a parent of control B if B is an element of A.Controls).
  • ViewState — A data structure that is sent to the client and back and is generally used for persisting form data across round trips. ViewState is of type StateBag, which is a dictionary that stores data as name/value pairs.
  • EnableViewState — Indicates whether a control maintains its view state across round trips. If a parent control does not maintain its view state, the view state for its child controls is automatically not maintained.
  • UniqueID — The hierarchically-qualified unique identifier assigned to a control by the ASP.NET page framework.
  • ClientID — A unique identifier assigned to a control by the ASP.NET page framework and rendered as the HTML ID attribute on the client. The ClientID is different from the UniqueID because the UniqueID can contain the colon character (:), which is not valid in the HTML ID attribute (and is not allowed in variable names in client-side script).
  • Visible — Determines whether a control is visible on a page.

Properties Inherited from WebControl

If a control derives from WebControl, it inherits additional properties that are related to visual display. For a complete list of properties inherited from WebControl, see System.Web.UI.WebControl. The following list describes some of the commonly accessed properties of WebControl.

  • Font — The font for the control.
  • ForeColor — The foreground color of the control.
  • BackColor — The background color of the control.
  • Height — The height of the control.
  • Width — The width of the control.
  • Attributes — A collection of name/value pairs rendered to the client as attributes. The Attributes property contains the union of declaratively set attributes that do not correspond to properties (or events) of the control and those that are set programmatically.

WebControl also exposes several additional cascading style sheet (CSS) styles as strongly typed properties.

Customizing Inherited Properties

A control can override an inherited property to customize the property. To override a property, you override its accessors. The following example shows a control that derives from Button and overrides the BackColor property so that the background color is always green.

using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
namespace CustomControls
{
public class DerivedButton : Button
  {
   public DerivedButton() : base()
       {
          base.BackColor = Color.Green;
       }
   public override Color BackColor
   {
      get
         {
            return base.BackColor; 
          }
      set
         {
             // Do nothing.
         }
   }

  }
}
[Visual Basic]
Option Explicit
Option Strict

Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Drawing

Namespace CustomControls
   Public Class DerivedButton
      Inherits Button
      
      Public Sub New()
         MyBase.BackColor = Color.Green
      End Sub
      
      Public Overrides Property BackColor() As Color
         Get
            Return MyBase.BackColor
         End Get
         Set
            ' Do nothing.
         End Set
      End Property 
   End Class
End Namespace

You can also change the metadata for a property by overriding (or providing) an attribute. The following code fragment shows how to hide the BackColor property from the property browser of a designer such as Visual Studio .NET by changing the BrowsableAttribute to false.

[Browsable(false)]
public override Color BackColor{...}
[Visual Basic]
<Browsable(False)> _
Public Overrides Property BackColor() As Color
   ...
End Property

See Also

Defining a Property | Property Types | Custom Property Sample