Principales respuestas
consulta datos session asp net

Pregunta
-
Hola estoy empezando con asp.net y tengo problema al querer actualizar unos datos:
Este método es el que se ejecuta al presionar un botón en el webform. El metodo funciona perfecto para guardar en la BD pero siempre guarda los mismos datos, yo creo que es porque no se actualiza el valor de session["cliente"]
Es decir cuando presiono el botón al hacer postback se vuelve a asignar el cliente pero no me estaría tomando los nuevos valores
clienteSession = (Clientes)Session["cliente"];
PD: no se si así es que se puede modificar los valores de la sessionprotected void UpdateUser_Click(object sender, EventArgs e) { //aca una vez que guardo las modificaciones en la BD lo que hago yo es actualizar mi variable
session["Cliente"]=cliente //donde cliente es el objeto que acabo de guardar en la base de datos } //Por otro lado en el page load tengo esto: if (Session["cliente"] != null) { clienteSession = new Clientes(); clienteSession = (Clientes)Session["cliente"]; cargarDatosCliente(); } else { FormsAuthentication.RedirectToLoginPage();//si la session finalizo entonces lo redirijo a la pagina del login }
EDIT:Bueno parece que no se ve en el código donde actualizo los valores de la session porque me lo copió comentado acá en el post,- Editado Artemis Spectrum jueves, 19 de septiembre de 2019 17:25
Respuestas
-
Por lo que estuve testeando el problema está en que al presionar el boton hace postback y primero lee está linea que está en el pageLoad
clienteSession = (Clientes)Session["cliente"];
Después de hacer esa asignación ejecuta el método "cargarDatosCliente" que lee los valores que tiene clienteSession (los cuales todavía no están actualizados porque recién se actualiza en el método del botón update)
luego recién entra al método del botón,y hace session["Cliente"]=cliente. donde cliente contiene los valores de los controles del webform pero esos valores fueron cargados con datos de la session anterior y ahí está el problema
- Propuesto como respuesta Pablo RubioModerator jueves, 19 de septiembre de 2019 18:31
- Marcado como respuesta Artemis Spectrum jueves, 19 de septiembre de 2019 19:11
Todas las respuestas
-
Con esta linea:
clienteSession = (Clientes)Session["cliente"];
te esta leyendo el valor anterior que habia en el Session y trayendolo a la variable. Hasta ahi es correcto. Si lo has depurado con el debugger y resulta que no te trae el valor esperado, la sospecha es que el problema se encuentra en el sitio donde guardas el valor en el Session (no en donde lo lees, que es lo que nos has mostrado). Habria que revisar la parte donde guardas ese valor a ver por que no esta ejecutando ese codigo, o si lo ejecuta, a ver por que el valor que aportas para ser guardado no es el esperado.
Por cierto, la linea anterior de tu codigo en la que guardas un "new Clientes" en la variable es completamente innecesaria y superflua dado que justo en la linea siguiente guardas un nuevo valor distinto dentro de la variable y sobreescribes ese "new Clientes".
- Propuesto como respuesta Pablo RubioModerator jueves, 19 de septiembre de 2019 14:57
-
hola
En el codigo que nos muestras recuperas los datos de la session, pero donde lo asignas ? te focalizas en el lugar incorrecto, no es como lo recuperas sino donde asignas la session donde esta el problema
ademas porque instancias la variable si despues la vas asignar
if (Session["cliente"] != null) { clienteSession = (Clientes)Session["cliente"]; cargarDatosCliente(); }
la asignas con el valor y listo, no necesitas el new
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta Pablo RubioModerator jueves, 19 de septiembre de 2019 14:57
-
Con esta linea:
clienteSession = (Clientes)Session["cliente"];
te esta leyendo el valor anterior que habia en el Session y trayendolo a la variable. Hasta ahi es correcto. Si lo has depurado con el debugger y resulta que no te trae el valor esperado, la sospecha es que el problema se encuentra en el sitio donde guardas el valor en el Session (no en donde lo lees, que es lo que nos has mostrado). Habria que revisar la parte donde guardas ese valor a ver por que no esta ejecutando ese codigo, o si lo ejecuta, a ver por que el valor que aportas para ser guardado no es el esperado.
Por cierto, la linea anterior de tu codigo en la que guardas un "new Clientes" en la variable es completamente innecesaria y superflua dado que justo en la linea siguiente guardas un nuevo valor distinto dentro de la variable y sobreescribes ese "new Clientes".
Hola , en el método update que adjunté es donde se le asigna los valores a la session pero no se por qué me guarda los viejos- Editado Artemis Spectrum jueves, 19 de septiembre de 2019 15:58
-
Hola , en el método update que adjunté es donde se le asigna los valores a la session pero no se por qué me guarda los viejos
No, en ese método no guardas nada, solo lees lo que ya está guardado. Si crees que eso guarda algo, entonces no es de extrañar que no te los esté guardando.
Para poder guardar algo en el session, hace falta que el Session esté a la izquierda de un signo de asignación:
Session["cliente"] = ElValorQueQuierasGuardar;
Observa que en tu método Update no hay ninguna sentencia que sea así.
-
Hola , en el método update que adjunté es donde se le asigna los valores a la session pero no se por qué me guarda los viejos
No, en ese método no guardas nada, solo lees lo que ya está guardado. Si crees que eso guarda algo, entonces no es de extrañar que no te los esté guardando.
Para poder guardar algo en el session, hace falta que el Session esté a la izquierda de un signo de asignación:
Session["cliente"] = ElValorQueQuierasGuardar;
Observa que en tu método Update no hay ninguna sentencia que sea así.
Hola disculpa pero si está en el método que adjunté, me quedó comentado acá cuando lo puse en el post
protected void UpdateUser_Click(object sender, EventArgs e) { //aca una vez que guardo las modificaciones en la BD lo que hago yo es actualizar mi variable
session["Cliente"]=cliente //donde cliente es el objeto que acabo de guardar en la base de datos }
- Propuesto como respuesta Pablo RubioModerator jueves, 19 de septiembre de 2019 18:31
-
Por lo que estuve testeando el problema está en que al presionar el boton hace postback y primero lee está linea que está en el pageLoad
clienteSession = (Clientes)Session["cliente"];
Después de hacer esa asignación ejecuta el método "cargarDatosCliente" que lee los valores que tiene clienteSession (los cuales todavía no están actualizados porque recién se actualiza en el método del botón update)
luego recién entra al método del botón,y hace session["Cliente"]=cliente. donde cliente contiene los valores de los controles del webform pero esos valores fueron cargados con datos de la session anterior y ahí está el problema
- Propuesto como respuesta Pablo RubioModerator jueves, 19 de septiembre de 2019 18:31
- Marcado como respuesta Artemis Spectrum jueves, 19 de septiembre de 2019 19:11