Ver Mensaje Individual
  #3 (permalink)  
Antiguo 11/01/2007, 11:02
juantiva
 
Fecha de Ingreso: junio-2006
Mensajes: 109
Antigüedad: 18 años, 6 meses
Puntos: 2
Re: Evitar refresco de pantalla

Puedes validar cuando el usuario le de a la tecla F5 o que que le al mouse click derecho y luego refresh.

yo tengo la siguiente función en una pagina base :

#Region "Refresh(F5)"
Public ReadOnly Property IsRefresh() As Boolean
Get
Return _isRefresh
End Get
End Property

Private _refreshState As Boolean
Private _isRefresh As Boolean

Protected Overrides Sub LoadViewState(ByVal savedState As Object)
Dim AllStates As Object() = savedState
MyBase.LoadViewState(AllStates(0))
_refreshState = Boolean.Parse(AllStates(1))
_isRefresh = _refreshState = Session("__ISREFRESH")
End Sub

Protected Overrides Function SaveViewState() As Object
Session("__ISREFRESH") = _refreshState
Dim AllStates() As Object = New Object(2) {}
AllStates(0) = MyBase.SaveViewState
AllStates(1) = Not (_refreshState)
Return AllStates
End Function

#End Region

Luego en el evento Load de la pagina base colocamos:
Me.Page.Response.Cache.SetNoStore()
Me.Page.Response.AddHeader("PRAGMA", "NOCACHE")
Me.Page.Response.Expires = -1
Me.Page.Response.Cache.SetCacheability(HttpCacheab ility.NoCache)

Con eso puedes mandar llamar la propiedad IsRefresh() la cual te regresa un boolean con un true si es un refresh y un false si no lo es. Puedes colocar una validación sobre todo en los eventos que afectan base de datos para que no hagas dos viajes a la misma...

Saludos espero te ayude