ASP.Net中防止頁面刷新重複提交的幾種方法

1、也是最簡單和最常用的辦法,就是使用轉向頁面語句,分兩種:
a.使用服務器端的 Response.Redirect("YourPage");
b.使用客戶端腳本 <script language=javascript>location.href='yourPage';</script>
這兩種方法的缺點是如果要保留頁面數據不太方便,如果不用保留可以採用。

2、操作完畢設置一個Session,進入頁面時判斷這個Session是否爲null,如果不是表示已經提交過了,但是缺點就是這個頁面無法再提交了,必須在別的頁面清空這個Session。

3、是從網上搜索到的一種方案,學習並共享一下:
DetectRefresh.aspx
===========================
<%@ Page Inherits="StevenBey.Web.UI.Page" %>
<html>
<head>
<title>Detecting Page Refresh [Demo]</title>
</head>
<body>
<form runat="server">
<asp:button Text="Test Refresh" runat="server" />
</form>
IsRefresh = <%= IsRefresh %>
</body>
</html>

StevenBey.Web.UI.Page.cs
======================
namespace StevenBey.Web.UI
{
public class Page : System.Web.UI.Page
{
private bool _refreshState;
private bool _isRefresh;

public bool IsRefresh
{
get
{
return _isRefresh;
}
}

protected override void LoadViewState(object savedState)
{
object[] allStates = (object[]) savedState;
base.LoadViewState(allStates[0]);
_refreshState = (bool) allStates[1];
_isRefresh = _refreshState == (bool) Session["__ISREFRESH"];
}

protected override object SaveViewState()
{
Session["__ISREFRESH"] = _refreshState;
object[] allStates = new object[2];
allStates[0] = base.SaveViewState();
allStates[1] = !_refreshState;
return allStates;
}
}
}
發佈了65 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章