sólo hay que poner este j avascript en la sección HTML de la página aspx por encima de la sección de cabeza
<script type = "text/javascript" >
function disableBackButton()
{
window.history.forward();
}
setTimeout("disableBackButton()", 0);
</script>
Tenemos que ponerlo en la sección HTML de la página que se quiere prevenir usuario a visitar pulsando el botón de retroceso
Código completo de la página se parece a esto
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
<script type = "text/javascript" >
function disableBackButton()
{
window.history.forward();
}
setTimeout("disableBackButton()", 0);
</script>
</head>
<body onload="disableBackButton()">
<form id="form1" runat="server">
<div>
This is First page <br />
<br />
Go to Second page
<br />
<br />
<asp:LinkButton ID="LinkButton1" runat="server"
PostBackUrl="~/Default2.aspx">Go to Second Page
</asp:LinkButton></div>
</form>
</body>
</html>
Si está usando Firefox entonces utilizar en lugar del proceso de carga
Si desea desactivar el botón de regreso utilizando código detrás de la página aspx, de lo que necesita para escribir código código C# a continuación se menciona detrás
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
string strDisAbleBackButton;
strDisAbleBackButton = "<script language="javascript">\n";
strDisAbleBackButton += "window.history.forward(1);\n";
strDisAbleBackButton += "\n</script>";
ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "clientScript", strDisAbleBackButton);
}
También podemos lograr esto mediante la desactivación de la memoria caché del navegador o caché escribiendo esta línea de código, ya sea en el evento Page_Load o en caso Page_Init
protected void Page_Init(object Sender, EventArgs e)
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1));
Response.Cache.SetNoStore();
}
al hacer esto, el usuario obtendrá el página ha caducado mensaje al golpear el botón atrás del navegador
Demo es:
también conocido como el post-redirección-Get patrón. – Rob
Esto no impide que el formulario sea reprocesado si el usuario pulsa "Atrás" (si le dicen a su navegador que vuelva a enviar) – philfreo
@ philfreo, de hecho, lo previene. La mayoría de los marcos de hoy emitirán un encabezado "302 Moved", que efectivamente le dice al navegador que use la página de resultados para el historial durante la navegación del botón de retroceso. –