預防重複發送【後端篇】
導致使用者重複送出Post
整理一下網路上找到的防止重複Post的方法
阿諾提供的方法,比之前使用的noCache設定更為有效
來源【阿諾的個人知識庫】
- 1. 建立一個類別BasePage.cs
先新增一個BasePage.cs類別
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
public class BasePage : System.Web.UI.Page
{
public BasePage()
{
this.PreRender += new EventHandler(Page_PreRender);
}
/// < summary>
/// BasePage 的摘要描述
/// < /summary>
private void SetLoadTime()
{
Session["loadTime"] = Server.UrlEncode(DateTime.Now.ToString());
}
void Page_PreRender(object sender, EventArgs e)
{
if (!IsPostBack)
{
SetLoadTime();
}
ClientScript.RegisterHiddenField("loadTime", Session["loadTime"].ToString());
}
/// < summary>
/// 取得值,指出網頁是否經由重新整理動作回傳 (PostBack)
/// < /summary>
protected bool IsRefresh
{
get
{
if (HttpContext.Current.Request["loadTime"] as string == Session["loadTime"] as string)
{
SetLoadTime();
return false;
}
return true;
}
}
}
- 2. 使用的ASP.NET頁面上繼承這個類別:
public partial class Default : BasePage
{
.....
.....
}
- 3. 提交按鈕加入判斷:
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (!this.IsRefresh)
{
.....
}
}
可以確實有效的防止使用者重新整理頁面重複送出資料
沒有留言:
張貼留言