Mantener estado formulario a través de varias páginas
3 seguidores
Hola a todos
He andado buscando por aqui y no he encontrado nada sobre como mantener el estado de un formulario a través de varias páginas.
Me explico:
Tengo un formulario común en todas las páginas de mi sitio Web y no quiero que si el usuario toca algo en el formulario y navega por distintos apartados del sitio este pierda las modificaciones que sobre el se han realizado.
El sitio lo estoy desarrollando con asp.net 2.0, alguien se ha encontrado con algo parecido??
Gracias!
alvararranz
Gracias por contestar!
Al final lo que he hecho es meter en una session una matriz con los datos del form ya que sólo se trata de cuatro campos. Tengo una funcion guardar y una cargar y con eso me basta.
Thanks!!!!!
deeleman
dagi3d
el único problema que podría encontrarse es si necesita guardar el valor de los campos antes de enviar el formulario, pero se me ocurre que podría meter un evento 'onchange' a cada campo y enviar el valor actual mediante ajax al servidor y guardarlo en la sesión.
ojo, que no tengo ni idea de asp, pero creo que esto es algo independiente de la plataforma
Si tiene que enviar el formulario, o lo que en jerga de ASP.NET se conoce como "PostBack", el interfaz manejador IPostbackHandler se encarga de cargar todos los valores en Viewstate, que es una especie de sesión a nivel de página, y cuya duración y alcance se limita a ésta.
Así, si envía el formulario sobre si mismo los valores introducidos permaneceran en el al recargar la página en caso de que Viewstate sea true. Asimismo, si en vez de enviar el formulario, hace clic en cualquier control que efectúe Postback, como Linkbutton, Hyperlink o cualquiera que dispare un evento de servidor (ciertos controles de servidor en .NET soportan eventos de tipo onChange o onClick, como si de javascript se tratara), la información que hubiera introducido en el formulario también viajará al servidor y puede permanecer en la próxima carga de la página.
dagi3d
el único problema que podría encontrarse es si necesita guardar el valor de los campos antes de enviar el formulario, pero se me ocurre que podría meter un evento 'onchange' a cada campo y enviar el valor actual mediante ajax al servidor y guardarlo en la sesión.
ojo, que no tengo ni idea de asp, pero creo que esto es algo independiente de la plataforma
deeleman
No he entendido nada.
¿Te refieres a que si en el formulario alguien introduce algún dato en cualoquiera de sus campos pero luego no lo envía, sino que hace clic en otro enlace, ese cambio permanezca en el formulario?
Si es eso te diré que eso no es posible, a menos que el enlace en cuestión sea un control web de tipo Hyperlink o Linkbutton que apunte al propio Webform y que Viewstate sea true. Pero si el usuario es pasado a otro WebForm, se perderán lógicamente los datos. Recuerda: Http no mantiene información de estado.
dagi3d
utiliza sesiones para guardar los valores