我的方法是无耻地从第4页被盗这对ASP联盟真棒文章.要检测刷新,可以在ViewState和Session中存储相同的值.如果用户刷新页面,它将使用与您的会话值不匹配的旧ViewState数据进行PostBack.一旦检测到这一点,您就可以使用一个简单的变量创建一个所有其他Pages继承的页面,以测试用户是否刷新了浏览器.此解决方案需要启用ViewState和有效的会话.
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (IsPostBack && ViewState[REFRESH_CHECK_GUID] != Session[REFRESH_CHECK_GUID])
{
IsRefresh = true;
}
Session[REFRESH_CHECK_GUID] = System.Guid.NewGuid().ToString();
ViewState[REFRESH_CHECK_GUID] = Session[REFRESH_CHECK_GUID];
}
/// <summary>
/// True if the last PostBack was caused by a Page refresh.
/// </summary>
public virtual bool IsRefresh
{
get;
private set;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12410 次 |
| 最近记录: |