Foros del Web » Programando para Internet » ASPX (.net) »

Demasiados Response.redirect()

Estas en el tema de Demasiados Response.redirect() en el foro de ASPX (.net) en Foros del Web. Hola a todos, Tengo la certeza de que algo estoy haciendo mal... He hecho una aplicación en ASP.NET en la que, por poner un ejemplo, ...
  #1 (permalink)  
Antiguo 22/02/2010, 11:24
 
Fecha de Ingreso: marzo-2009
Mensajes: 76
Antigüedad: 15 años, 1 mes
Puntos: 0
Demasiados Response.redirect()

Hola a todos,

Tengo la certeza de que algo estoy haciendo mal...

He hecho una aplicación en ASP.NET en la que, por poner un ejemplo, tengo un gridview con comentarios y debajo un cuadro de texto con un botón para añadir comentario.

Si el usuario añade el comentario, la página recarga y todo ok. Pero si luego pulsa F5, la pagina se recarga pidiendo reenvio de información y añadiendo un comentario igual al anterior. Y así tantas veces como recargara la página.

Lo que he hecho para solucionarlo ha sido poner un response.redirect() hacia la misma página en la que estoy. Pero lo veo incorrecto y chapucero...

Como podria solventar este tipo de casos??

Saludos.
Muchas gracias.
  #2 (permalink)  
Antiguo 23/02/2010, 13:01
 
Fecha de Ingreso: enero-2010
Ubicación: Sevilla
Mensajes: 202
Antigüedad: 14 años, 3 meses
Puntos: 5
Respuesta: Demasiados Response.redirect()

Comprueba que no sea un postback antes de cargar la página.
Así es en VB.net
Código VB.NET:
Ver original
  1. If Not IsPostBack Then
  2.  
  3.       ejecutarAccionesUnaSolaVez()
  4.  
  5. Else
  6.  
  7.        ejecutarAccionesPorCadaRefrescamiento
  8.  
  9. End If
__________________
Mi blog de temas más o menos técnicos

Y aquí el Jamón jamon de Jabugo
  #3 (permalink)  
Antiguo 24/02/2010, 10:42
 
Fecha de Ingreso: marzo-2009
Mensajes: 76
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Demasiados Response.redirect()

Hola de nuevo,

Si, conozco la metodología que expones, pero parece más un problema que ocurre antes del form_load(), en el propio navegador Retry/Cancel.

Esta es la manera en la que añado un comentario ahora mismo, no se si podréis ver algo raro o incorrecto que produzca este "error".

Código vb:
Ver original
  1. Protected Sub lnkAddComentario_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnkAddComentario.Click
  2.         Using cnn As New SqlConnection(ConfigurationManager.ConnectionStrings("fragaProjects_testConnectionString1").ToString)
  3.             Try
  4.                 Dim cmd As SqlCommand
  5.                 cnn.Open()
  6.                 'id, usuario, proyecto, fecha, comentario
  7.                cmd = New SqlCommand("INSERT INTO [ComentariosProyecto] ([usuario], [proyecto], [fecha], [comentario]) VALUES (@usuario, @proyecto, @fecha, @comentario)", cnn)
  8.                 With cmd.Parameters
  9.                     .AddWithValue("@usuario", Session("idUser"))
  10.                     .AddWithValue("@proyecto", fvProyecto.SelectedValue)
  11.                     .AddWithValue("@fecha", Now)
  12.                     .AddWithValue("@comentario", txtComentari.Text)
  13.                 End With
  14.  
  15.                 cmd.ExecuteNonQuery()
  16.  
  17.             Catch ex As Exception
  18.                 ClientScript.RegisterClientScriptBlock(Me.GetType(), "javascript", "<script>alert('ERROR INSERTING COMMENT')</script>")
  19.             End Try
  20.         End Using
  21.         txtComentari.Text = ""
  22.         Response.Redirect("project_details.aspx?id=" & Request.QueryString("id"), True)
  23.     End Sub

Gracias.
  #4 (permalink)  
Antiguo 24/02/2010, 13:13
Avatar de xjuanch0x  
Fecha de Ingreso: septiembre-2009
Mensajes: 125
Antigüedad: 14 años, 7 meses
Puntos: 1
Mensaje Respuesta: Demasiados Response.redirect()

Cita:
Iniciado por joseibarz Ver Mensaje
Hola de nuevo,

Si, conozco la metodología que expones, pero parece más un problema que ocurre antes del form_load(), en el propio navegador Retry/Cancel.

Esta es la manera en la que añado un comentario ahora mismo, no se si podréis ver algo raro o incorrecto que produzca este "error".

Código vb:
Ver original
  1. Protected Sub lnkAddComentario_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnkAddComentario.Click
  2.  
  3. If Not IsPostBack
  4. Then
  5.         Using cnn As New SqlConnection(ConfigurationManager.ConnectionStrings("fragaProjects_testConnectionString1").ToString)
  6.             Try
  7.                 Dim cmd As SqlCommand
  8.                 cnn.Open()
  9.                 'id, usuario, proyecto, fecha, comentario
  10.                cmd = New SqlCommand("INSERT INTO [ComentariosProyecto] ([usuario], [proyecto], [fecha], [comentario]) VALUES (@usuario, @proyecto, @fecha, @comentario)", cnn)
  11.                 With cmd.Parameters
  12.                     .AddWithValue("@usuario", Session("idUser"))
  13.                     .AddWithValue("@proyecto", fvProyecto.SelectedValue)
  14.                     .AddWithValue("@fecha", Now)
  15.                     .AddWithValue("@comentario", txtComentari.Text)
  16.                 End With
  17.  
  18.                 cmd.ExecuteNonQuery()
  19.  
  20.             Catch ex As Exception
  21.                 ClientScript.RegisterClientScriptBlock(Me.GetType(), "javascript", "<script>alert('ERROR INSERTING COMMENT')</script>")
  22.             End Try
  23.         End Using
  24.         txtComentari.Text = ""
  25.         Response.Redirect("project_details.aspx?id=" & Request.QueryString("id"), True)
  26. End If
  27.     End Sub

Gracias.


Hazlo asi:
  #5 (permalink)  
Antiguo 02/03/2010, 07:41
 
Fecha de Ingreso: marzo-2009
Mensajes: 76
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Demasiados Response.redirect()

Bueno, me decidí a buscar soluciones ni que fuera en inglés, y encontré esto:

http://aspalliance.com/687

Lo dejo por si le sirve a alguien de respuesta, propone soluciones basadas en esto mismo, o en ejecuciones sobre la base de datos, por lo visto no lo hacía tan mal .

Saludos.

Etiquetas: aspx
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:20.