2010-06-24 8 views
9

He estado usando ASP.NET (C#) durante los últimos dos años. He aprendido mucho, pero aún queda mucho por aprender :)Uso de los controles web del usuario en lugar de formularios web

He usado MasterPages, 'controles de usuario Web' para cosas como encabezados, pies de página de navegación, etc.

Una cosa que tengo nunca verdad entendido es la práctica de usar 'Controles de usuario web' para su contenido y lógica;

Home.aspx ------ Home.ascx 
AboutUs.aspx ----- AboutUs.ascx 
Ordering.aspx ---- Ordering.acsx 

He estado trabajando con algunos proyectos en los últimos meses que utilizan esta estructura. Soy consciente de que esto es realmente una práctica común, pero realmente no entiendo todos los beneficios.

Recuerdo cuando probé este enfoque antes y terminé teniendo terribles problemas de estado de visualización con controles como Gridview ... una vez que saqué toda la lógica y la puse en una página .aspx todo funcionó bien.

Me doy cuenta ahora de que tal vez necesitaba agregar Gridview a la colección viewstate ... pero esto solo refuerza mi dificultad para comprender por qué se usa este enfoque, dado el problema del estado de vista.

Entiendo completamente las ventajas de 'Web User Controls' en relación con cosas como encabezados, menús, pies de página, etc. en cualquier lugar que implique duplicación pero los proyectos que he visto tienen páginas/controles que son bastante específicos - en en otras palabras, es poco probable que se reutilice en otro lugar: la página aspx solo contiene un control (.ascx) con el contenido y la lógica, y solo se usará en esa página, en ningún otro lugar.

Ignorando 'Code Reuse', ¿qué otros beneficios ofrece este enfoque?

Respuesta

2

Creo que su ejemplo de PageA.aspx -> PageA.ascx es en realidad un mal ejemplo para resaltar los beneficios de los controles de usuario web. Retroceda un paso desde estos ejemplos de control de "página" y piense en el objetivo principal de un control de usuario web. Sirven para encapsular la interfaz de usuario y la funcionalidad dentro de un bloque discreto.

El mayor beneficio en mi opinión es saber que si desarrollo algo así como un formulario de comentarios una vez como control de usuario web y lo despliego a través de las páginas de mi sitio tengo un solo elemento para actualizar en la solución que actualizará cada página en la que existe.

Otra ventaja menos obvia es que muchos sistemas de gestión de contenido como Umbraco utilizan el control del usuario web como complementos. De esta forma, puede desarrollar complementos para que el usuario/editor final seleccione y coloque el contenido de la página como mejor le parezca.

+0

Brian, colocar algo así como un formulario de comentarios en un control web tiene mucho sentido, estoy a favor de colocar widgets como este en los controles ... tal vez estos proyectos que he visto donde toda la página está anidada dentro de un control web, ¿no es la forma de hacer las cosas después de todo? .... si Home.aspx contuviera múltiples controles como 'HomepageSlideshow.ascx', 'TwitterFeed.ascx' esto tendría mucho más sentido. – Dal

+0

@Dal, exactamente. Aunque técnicamente diferente, una página y un control de usuario web esencialmente se comportan de manera muy similar y es necesario que exista un propósito real para que el enfoque que describa se haya tomado. Sin más detalles, no hay un beneficio obvio –

4

controles de usuario se utilizan dentro de los formularios Web ... que no se utilizan en sustitución


Editar:

En ese caso, no veo ningún beneficio en el uso de ese método (además de la reutilización). De hecho, puede tener más sobrecarga, ya que los eventos del ciclo de página deben pasar de la página al control.

+0

Estoy enterado de eso - mi punto es que tendrá una página como Home.aspx y todo lo que contiene es un control personalizado llamado Home.ascx ... Home.aspx es casi como un contenedor ... I ' Estoy tratando de entender por qué este enfoque se usa especialmente en los casos en que no hay requisitos para la reutilización del código. – Dal

+1

En ese ejemplo particular, no hay ningún beneficio real al usar un control de usuario web. Parece que Masterpages hubiera sido más apropiado. –

+0

@Ed B - Esa es exactamente mi situación;) – Dal

Cuestiones relacionadas