none
¿Evitar que se ejecute la ultima instruccion al presionar f5? RRS feed

  • Pregunta

  • Saludos expertos.

    Como la pregunta lo indica, como puedo evitar que se ejecute la ultima instrucción o evento realizado en asp.net al momento de oprimir la tecla F5 y recargar el navegador, lo que sucede es que luego del click del buttom registrar, si presiono f5 se ejecuta la ultima instruccion, y se ingresa datos repetidos...

    vi por ahi que utilizando un update panel se solucionaba el problema, pero como implemente varios pluguins jquery para filtros y validaciones, es que la utilizacion del update panel queda descartada, ya que creo que existe una incopatibilidad entre este componente y jquery.

    Agradesco de antemano la guia que pudieran ofrecerme...


    • Editado ivankikes jueves, 9 de agosto de 2012 23:10
    jueves, 9 de agosto de 2012 23:09

Respuestas

  • hola

    evitar no puede evitarlo, es una accion del browser

    lo que si puede hacer es validarlo, por ejemplo si se ejecuta una ccion que inserta un registro de un articulo, podrias antes de hacerlo validar si ese articulo ya existe y evitar que se duplique

    con esto si alguien presiona F5 y se vuelve a ejecutar la transaccion tendras la valdiacion para evitarlo

    - la otra es que despues de una accion no dejes que la pagina vuelva al cliente, sino que podrias redireccionarlo, o sea si despues de insertar redireccionas a una pagina que listas los registros esto evitaria que al presionar f5 se eejcute la accio, ya que a lo sumo se recargara la lista

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta ivankikes viernes, 10 de agosto de 2012 1:05
    viernes, 10 de agosto de 2012 0:43

Todas las respuestas

  • Puede agregar un campo escondido <asp:HiddenField> en la respuesta de la página cuando es un postback.  Entonces al inicio del postback puede revisar si dicho campo existe y tiene el valor esperado.  Si existe y el valor es correcto, quiere decir que este es un segundo (o más) postback.  En cuyo caso puede usted introducir código en sus eventos para suprimir la ejecución de código.

    Sería muy bonito saber cómo "borrar" los eventos del ViewState y así evitar el evento desde el Page_Load, pero la verdad no conozco lo suficiente del ViewState como para ofrecerle esta ruta.


    Jose R. MCP
    Code Samples

    jueves, 9 de agosto de 2012 23:23
    Moderador
  • Muchas gracias por la respuesta, aunque no me quedo muy clara, como realisaria un proceso en la respuesta de la pagina cuando es un postback? debo hacerlo en el codebehind? y sobre introducir codigo para suprimir la ejecucion del codigo, Donde ingresaria este codigo?

    podrias facilitarme algun link con un ejemplo al respecto? puesto que no me quedo muy claro.

    jueves, 9 de agosto de 2012 23:44
  • hola

    evitar no puede evitarlo, es una accion del browser

    lo que si puede hacer es validarlo, por ejemplo si se ejecuta una ccion que inserta un registro de un articulo, podrias antes de hacerlo validar si ese articulo ya existe y evitar que se duplique

    con esto si alguien presiona F5 y se vuelve a ejecutar la transaccion tendras la valdiacion para evitarlo

    - la otra es que despues de una accion no dejes que la pagina vuelva al cliente, sino que podrias redireccionarlo, o sea si despues de insertar redireccionas a una pagina que listas los registros esto evitaria que al presionar f5 se eejcute la accio, ya que a lo sumo se recargara la lista

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta ivankikes viernes, 10 de agosto de 2012 1:05
    viernes, 10 de agosto de 2012 0:43
  • Gracias leandro, creo que optare por la segunda opción, aunque cada una es valida segun la situacion. Gracias por compartir tus conocimientos.

    Saludos.
    viernes, 10 de agosto de 2012 1:05
  • Prueba poniendo esta linea dentro del Page_Load

    protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
               //Aquí pones lo que no quieres que se ejecute cuando se refresque la web o cuando le des F5
            }
        }

    Saludos

    sábado, 11 de agosto de 2012 6:08
  • hace un Response.Redirect("minmapagina.aspx"); al final del codigo que te genera conflicto.
    martes, 26 de agosto de 2014 13:38