it-swarm-es.tech

¿Cuál es la diferencia entre UserControl, WebControl, RenderedControl y CompositeControl?

¿Cuál es la diferencia, cuáles son los términos oficiales, hay términos obsoletos en ASP.NET 3.5?

50
Thomas Jespersen

UserControl : Un control personalizado, que termina en .ascx, que se compone de otros controles web. Es casi como una pequeña versión de una página web de aspx. Consiste en una interfaz de usuario (el ascx) y codebehind. No se puede reutilizar en otros proyectos haciendo referencia a una DLL.

WebControl : un control alojado en una página web o en un UserControl. Consiste en una o más clases, trabajando en tándem, y está alojado en una página aspx o en un UserControl. Los controles web no tienen una "página" de IU y deben representar su contenido directamente. Se pueden reutilizar en otras aplicaciones haciendo referencia a sus DLL.

RenderedControl : no existe. Puede ser sinónimo de control web. Podría indicar que el control está escrito directamente en HttpResponse en lugar de procesarse en una página aspx.

CompositeControl: Entre UserControls y WebControls. Se codifican como UserControls, ya que están compuestos por otros controles. No hay ninguna IU gráfica para la composición de control, y el diseñador de controles debe codificar el soporte para la edición de IU de CompositeControls. La composición se realiza en el código. CompositeControls se puede reutilizar en otros proyectos como WebControls.

47
Will

Has olvidado el ServerControl.

En mi entendimiento es así:

  • Solo hay dos tipos diferentes de controles: UserControl y ServerControl
  • CompositeControls son controles de usuario "avanzados". Encuentre más información en Scott Guthries Blog .
  • Todos ellos son controles web (porque todos se derivan de System.Web.UI.Control)
  • Todos están renderizados de cualquier manera, así que me gustaría verlos a todos como controles renderizados.

Desde MSDN:

Control de usuario

En ASP.NET: un control de servidor que se crea de forma declarativa utilizando la misma sintaxis que una página ASP.NET y se guarda como un archivo de texto con una extensión .ascx. Los controles de usuario permiten particionar y reutilizar la funcionalidad de la página. Al primer pedido, el marco de la página analiza un control de usuario en una clase que deriva de System.Web.UI.UserControl y compila esa clase en un ensamblado, que se reutiliza en solicitudes posteriores. Los controles de usuario son fáciles de desarrollar debido a su creación e implementación de estilo de página sin compilación previa.

Control del servidor

Un componente del lado del servidor que encapsula la interfaz de usuario y la funcionalidad relacionada. Un control de servidor ASP.NET deriva directa o indirectamente de la clase System.Web.UI.Control. El superconjunto de controles de servidor ASP.NET incluye controles de servidor web, controles de servidor HTML y controles móviles ASP.NET. La sintaxis de la página para un control de servidor ASP.NET incluye un atributo runat = "server" en la etiqueta del control. Vea también: control de servidor HTML, controles de servidor de validación, control de servidor web.

8
JRoppert

Al igual que los formularios web, los controles de usuario se pueden crear en el diseñador visual o se pueden escribir con un código independiente del HTML. También pueden soportar eventos de ejecución. Sin embargo, dado que los controles de usuario web se compilan dinámicamente en el tiempo de ejecución, no pueden agregarse a la Caja de herramientas y están representados por un simple marcador de posición cuando se agregan a una página.

Esto hace que los controles web sean más difíciles de usar si está acostumbrado a la compatibilidad total con Visual Studio .NET en tiempo de diseño, incluida la ventana Propiedades y las vistas previas de la vista Diseño. Además, la única forma de compartir el control del usuario entre las aplicaciones es colocar una copia por separado en cada aplicación, lo que requiere más mantenimiento si realiza cambios en el control.

Los controles web personalizados son código compilado, lo que los hace más fáciles de usar pero más difíciles de crear. Los controles personalizados web deben ser creados en código. Una vez que haya creado el control, puede agregarlo a la Caja de herramientas y mostrarlo en un diseñador visual con soporte completo para la ventana de Propiedades y todas las demás funciones en tiempo de diseño de los controles del servidor ASP.NET. Además, puede instalar una sola copia del control personalizado de la Web en el caché de ensamblados global y compartirlo entre aplicaciones, lo que facilita el mantenimiento.

3
Govardhan

Contrariamente a la respuesta de Will, es posible reutilizar UserControls en otros proyectos por haciendo referencia a un proyecto de implementación web .

2
Guillaume CR

Como aún no tengo suficiente reputación para comentar, agregaré esto como una respuesta, pero se refiere a la respuesta de Will de arriba.

Desde el enlace incluiste:

Los controles compuestos son la herramienta adecuada para diseñar componentes complejos en los que varios controles secundarios se agregan e interactúan entre sí y con el mundo exterior. Los controles representados son los adecuados para la agregación de solo lectura de controles en los que la salida no incluye elementos interactivos, como los cuadros desplegables o de texto.

Creo que la documentación se refiere a UserControls que se han creado al anular el método de Renderización como Controles Renderizados. Por lo tanto, no es un tipo separado como implica la pregunta, sino una forma de implementar un UserControl; un patrón.

0
Don