Tutorial de ASP.NET
Vista Previa de ASP.NET 2.0

Creando Controles Elemento Web Personalizados

Puesto que cualquier control de servidor ASP.NET puede usarse como Elemento Web, se pueden crear Elementos Web personalizados usando controles de usuario ASP.NET o controles de servidor personalizados.

Este ejemplo muestra un control Elemento Web de usuario que acepta texto de entrada. El control de usuario implementa la interfaz IWebPart para proporcionar valores a las propiedades comunes del Elemento Web que se muestran, tales como su título y descripción.

C# Control de Usuario WebPart


También se pueden escribir  Elementos Web como controles de servidor personalizados. Aunque se puede heredar de cualquier control, ASP.NET proporciona la clase base WebPart, la cual hace considerablemente más fácil la personalización del comportamiento predeterminado del control.

Este ejemplo muestra un control Elemento Web que muestra texto. El control tiene una propiedad llamada ControlText que especifica el texto a mostrar. Además sobreescribe las propiedades AllowMinimize y AllowClose para evitar que el control sea minimizado o cerrado por el usuario.

C# Control Elemento Web personalizado

Un Elemento Web puede, también, proporcionar verbos personalizado que permiten a los usuarios realizar acciones sobre él. La zona es la responsable de mostrar los verbos de un Elemento Web, la mayoría de las veces los verbos se muestran en el Menú Verbo del Elemento Web. En el ejemplo anterior de edición el elemento "Editar" del menú desplegable era un verbo que se mostraba solamente en el modo "Edit"

Para proporcionar verbos personalizados para un control que hereda de WebPart ,se pueden sobreescribir las propiedades Verbo, crear un objeto WebPartVerbCollection con una colección de objetos WebPartVerb y devolverlo. Este ejemplo muestra como combinar los verbos proporcionados por la clase base con un verbo nuevo llamado "Save". El verbo se mostrará en el Menú Verbo del Elemento Web.

C# Añadiendo Verbos Personalizados

Un Elemento Web puede especificar también, propiedades que pueden ser editadas por el usuario. Para proporcionar propiedades editables se debe marcar la declaración de la propiedad con el atributo WebBrowsable. La zona de editor (EditorZone) de la página debe, además,  incluir un Editor Part capaz de editar las propiedades personalizadas. Se puede usar el PropertyGridEditorPart para proporcionar edición de las propiedades personalizadas en una tabla de propiedades.

Este ejemplo hace editable la propiedad Text del Elemento Web y usa un PropertyGridEditorPart para permitir al usuario editarla.

  1. Entrad en la página.
  2. Seleccionad "Edit" en la lista desplegable.
  3. Haced click en la flecha desplegable del Menú Verbo del control y seleccionad Editar en el menú. Se podrá ver el editor con una rejilla de propiedades mostrando la propiedad Text.
C# Editando Propiedades de Elementos Web

También podemos proporcionar nuestros propios Editor Parts personalizados para editar propiedades del Elemento Web. Estos Editor Parts se muestran el la zona de editor cuando el usuario edita el Elemento Web. 

Para crear un Editor Part personalizado heredamos del control EditorWebPart. El EditorWebPart es un control compuesto, por lo que se puede sobreescribir el método CreateChildControls y crear controles para el Elemento Web. Es necesario también sobreescribir los métodos ApplyChanges y SyncChanges para aplicar al control los cambios que se hagan en el EditorPart.

Para proporcionar Editor Parts personalizados se puede implementar la interface IWebEditable al Elemento Web e implementar el método CreateEditorParts y la propiedad WebBrowsableObject. El método CreateEditorParts debe devolver una colección de Editor Parts.

Este ejemplo muestra un Editor Part personalizado para editar una propiedad de un Elemento Web.

C# Escribiendo un Editor Part personalizado