怎样避免(F5)刷新页面造成的重复提交

来源:互联网 发布:网络彩票2018重启时间 编辑:程序博客网 时间:2024/04/20 06:18

避免刷新页面造成的重复提交

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>    


J完成提交后,使用hidSession的值同步

 

 $(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();    }

 

 

0 0
原创粉丝点击