ASP.NET重複コミット防止
7224 ワード
現在、多くのサイトがページ挿入やデータベースの更新を提出しています.例えば、伝言帳、1人のユーザーが伝言を提出した後、F 5を押すと、伝言を再提出し、データベースに2つの同じ伝言が表示されます.本稿では、ページのリフレッシュを防止し、データを繰り返し提出する方法を紹介しました.
現在、多くのサイトがページ挿入やデータベースの更新を提出しています.例えば、伝言帳、1人のユーザーが伝言を提出した後、F 5を押すと、伝言を再提出し、データベースに2つの同じ伝言が表示されます.本稿では、ページのリフレッシュを防止し、データを繰り返し提出する方法を紹介しました.
【全文】
1、最も簡単で最もよく使われる方法で、転向ページ文を使って、2種類に分けます:a.サーバー側のResponseを使う.Redirect("YourPage"); b.クライアントスクリプトlocationを使用する.href='yourPage'; この2つの方法の欠点は、ページデータを保持するのに不便な場合、保持しなくても使用できることです.
2、操作完了1つのセッションを設定し、ページに入るとそのセッションがnullであるか否かを判断し、既にコミットされていることを示すのではないが、欠点はこのページがこれ以上コミットできないことであり、他のページでこのセッションをクリアしなければならないことである.
3、ネットで検索した方案で、勉強して共有します:DetectRefresh.aspx ===========================
この記事の転載:http://www.360doc.com/content/13/1202/09/10504424_333802187.shtml
StevenBey.Web.UI.Page.cs ======================
現在、多くのサイトがページ挿入やデータベースの更新を提出しています.例えば、伝言帳、1人のユーザーが伝言を提出した後、F 5を押すと、伝言を再提出し、データベースに2つの同じ伝言が表示されます.本稿では、ページのリフレッシュを防止し、データを繰り返し提出する方法を紹介しました.
【全文】
1、最も簡単で最もよく使われる方法で、転向ページ文を使って、2種類に分けます:a.サーバー側のResponseを使う.Redirect("YourPage"); b.クライアントスクリプト
2、操作完了1つのセッションを設定し、ページに入るとそのセッションがnullであるか否かを判断し、既にコミットされていることを示すのではないが、欠点はこのページがこれ以上コミットできないことであり、他のページでこのセッションをクリアしなければならないことである.
3、ネットで検索した方案で、勉強して共有します:DetectRefresh.aspx ===========================
この記事の転載:http://www.360doc.com/content/13/1202/09/10504424_333802187.shtml
<%@ 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;
}
}
}
, IsPageRefreshed " , ",
if(!IsRefresh )
{
}