tutorial pages net asp application asp.net-mvc session-state session-variables

asp.net-mvc - pages - javascript asp net



Asp.Net MVC y SesiĆ³n (3)

Me gustaría construir un objeto en diferentes pasos en una aplicación mvc de asp.net, cada paso es una página diferente. El tipo de cosa que almacenarías en Session en una aplicación rápida de Web.Forms.

Al leer sobre esto, Session no me parece como algo muy asp.net MVC''ish. Sin embargo, realmente no puedo pensar en otras alternativas a esta situación, ya que TempData y ViewData tampoco parecen ajustarse, así que tal vez me equivoque.

Por supuesto, podría poner los 4 pasos en una página y mostrar / ocultar, pero ese no es mi punto con la pregunta. Me gustaría conocer su opinión acerca de Session en MVC, si es un buen enfoque para este tipo de problema de varios pasos o si tiende a hacerlo de otras maneras.

Esto es muy parecido a las variables de sesión de la pregunta en ASP.NET MVC , excepto que no estoy buscando la forma de acceder a la sesión, pero si es la mejor manera de resolver un problema de este tipo o si hay algo mejor, me estoy perdiendo en Asp. Net MVC.

Gracias por adelantado


No hay nada que no sea MVC acerca de Session, es una parte vital de la web y la mayoría de los sitios lo utilizan de alguna manera. Realmente tienes dos opciones principales. Almacene el objeto en la base de datos entre páginas (lo que significa guardar un objeto incompleto) o póngalo en sesión. Ambos tienen ventajas y desventajas.

En sesión no tiene que guardar un objeto parcial en la base de datos, pero si el usuario se retira o la sesión se agota, pierde toda esa información. También puede llevar a una huella de memoria más grande por usuario y cuando se llega a escalar, causa otros problemas. (Todo lo cual puede resolverse utilizando la sesión fija en un equilibrador de carga o en un almacén de sesión central).

La forma de la base de datos es mejor de muchas maneras pero, por lo general, no desea guardar un objeto incompleto en la base de datos, un compromiso es crear otra tabla y guardar el objeto serializado en esa tabla. No pasa por sus tablas reales y, por lo tanto, no tiene que comprometer las restricciones de su base de datos. (También puede almacenar datos de sesión en la base de datos, que básicamente está haciendo lo mismo)

Al final, es una decisión de juicio entre las dos formas, he usado ambas a lo largo de los años.


Puede pasarlo entre vistas con TempData ... pero debe seguir pasándolo a través de vistas posteriores. Está destinado a ser consumido por una solicitud posterior, pero eso no quiere decir que no pueda pasar los datos temporales a la siguiente solicitud, que también vuelve a colocar los mismos datos en los datos temporales.


¿Has probado <%= Html.HiddenField(...) %> ?