158 votos

¿Cuál es el "ciclo de vida de la página" de una página ASP.NET MVC, en comparación con ASP.NET WebForms?

¿Cuál es el "ciclo de vida de la página" de una página ASP.NET MVC, en comparación con ASP.NET WebForms?

Estoy tratando de entender mejor esta "simple" pregunta para determinar si las páginas existentes que tengo en un sitio (muy) simple pueden ser fácilmente convertidas de ASP.NET WebForms.

Lo que busco es una "conversión" del proceso siguiente o un ciclo de vida alternativo.

Lo que estoy haciendo actualmente:

(sí, sé que cualquier persona capaz de responder a mi pregunta ya sabe todo esto - sólo estoy tratando de obtener una comparación del "ciclo de vida", así que pensé que iba a empezar por completar lo que ya todos sabemos)

Renderización de la página:

  • Tengo una página maestra que contiene mi plantilla básica
  • Tengo páginas de contenido que me dan regiones nombradas de la página maestra en las que pongo contenido.
  • En un manejador de eventos para cada página de contenido cargo datos de la base de datos (en su mayoría de sólo lectura).
  • Vinculo estos datos a controles ASP.NET que representan rejillas, desplegables o repetidores. Todos estos datos "viven" dentro del HTML generado. Algunos de ellos entran en ViewState (¡pero no voy a entrar demasiado en eso!)
  • Establezco propiedades o enlazo datos a ciertos elementos como controles de Imagen o TextBox en la página.
  • La página se envía al cliente renderizada como HTML no reutilizable.
  • Intento evitar el uso de ViewState más allá de lo que la página necesita como mínimo.

Del lado del cliente (sin usar ASP.NET AJAX):

  • Puedo usar JQuery y algunos trucos desagradables para encontrar controles en la página y realizar operaciones en ellos.
  • Si el usuario selecciona en un desplegable -- se genera un postback que desencadena un evento C# en mi codebehind. Este evento puede ir a la base de datos, pero haga lo que haga una página HTML completamente nueva acaba siendo enviada de vuelta al cliente.
  • Puedo utilizar Page.Session para almacenar pares clave-valor que necesito reutilizar más tarde

Entonces, con MVC, ¿cómo cambia este "ciclo de vida"?

39voto

Mike Glenn Puntos 1474

Intentaré comentar cada uno de los puntos que ha mencionado:

Sus páginas maestras siguen existiendo en MVC y se utilizan para proporcionar un diseño coherente al sitio.

Sus páginas de contenido se convertirán en vistas en el mundo MVC. Siguen proporcionando las mismas áreas de contenido a tus páginas maestras.

El manejo de eventos de los formularios web no debe ser usado en MVC, en su lugar tus clases Controladoras y sus métodos de acción manejarán la carga de tus datos en un "modelo" que se pasa a la vista.

Aunque la vinculación de datos al estilo del formulario web es posible en MVC, creo que no es la solución óptima. Es mejor colocar los datos en una clase modelo y escribir fuertemente la vista para tener acceso directo a ese modelo. Entonces es simplemente una cuestión de usar el <%= ViewData.Model.SomeProperty %> sintaxis para acceder a sus datos y mostrarlos en los lugares deseados. En cuanto a viewstate, mi recomendación es olvidar que existe.

Recuerda que una de las ventajas de usar MVC es que tienes control sobre el HTML que envías al cliente. Aprovecha ese poder y trata de encontrar soluciones que te permitan mantener ese control. Los controles de los formularios web intentan ocultar el html de ti y como tal hacen más difícil personalizar el html cuando lo necesitas.

Yo recomendaría encarecidamente JQuery o una de las otras bibliotecas de javascript igualmente potentes. Pero aprende a usarlas para acceder directamente al DOM de HTML y evitar los problemas de manipulación de id de los controles de los formularios web.

Puedes usar jquery para enganchar la selección desplegable en el lado del cliente y enviar peticiones estándar o de estilo ajax. Esas peticiones pueden devolver nuevas páginas, redirecciones, fragmentos html o incluso datos JSON que pueden utilizarse para actualizar la página existente.

La Sesión asp.net se puede utilizar según sea necesario.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X