避免刷新页面造成的重复提交
1.Ajax
页面的按钮使用ajax提交,后台用ashx页面处理。即可防止页面重复提交
2. Hidden ,session
使用一个Hidden标签和session值一起来做标识
在提交表单后,修改Session的值。使得两者的值不等,在提交表单前,如果检测到此种情况,则表示表单重复提交。
前台页面
<div>
<asp:HiddenField ID="hid" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</div>
Js 完成提交后,使用hid与Session的值同步
$(function () { document.getElementById("hid").value= "<%=Session["F5_Fresh"].ToString()%>" })
后台
protected void Page_Load(object sender, EventArgs e)
{
if (this.IsPostBack)
{ }
else
{ //初始化页面时给 Session赋值,同时前台也要给隐藏控件赋值
Session["F5_Fresh"] = Guid.NewGuid().ToString();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
//在处理前进行判断
if (CheckPageSession())
{
Session["F5_Fresh"] = Guid.NewGuid().ToString();
//业务代码
}
else { return; }
}
/// <summary>
/// 检测是否相等,如果相等表示第一次提交,不相等表示重复提交
/// </summary>
/// <returns></returns>
private bool CheckPageSession()
{ return hid.Value == Session["F5_Fresh"].ToString(); }