ASP.Net中防止页面刷新重复提交的几种方法
1个回答
展开全部
【摘要】目前很多网站都要提交页面插入或更新数据库,比如留言本,一个用户提交留言后,如果按F5,就会重新提交一遍留言,导致数据库出现两条一模一样的留言,
本文介绍了几种防止页面刷新,导致重复提交数据的方法。
a.使用服务器端的 Response.Redirect(YourPage);
b.使用客户端脚本 <script language=javascriptlocation.href='yourPage';</script
这两种方法的缺点是如果要保留页面数据不太方便,如果不用保留可以采用。
2、操作完毕设置一个Session,进入页面时判断这个Session是否为null,如果不是表示已经提交过了,但是缺点就是这个页面无法再提交了,必须在别的页面清空这个Session。
3、是从网上搜索到的一种方案,学习并共享一下:
DetectRefresh.aspx
===========================
<%@ Page Inherits=StevenBey.Web.UI.Page %<html<head<titleDetecting Page Refresh [Demo]</title</head<body<form runat=server
<asp:button Text=Test Refresh runat=server /</formIsRefresh = <%= IsRefresh %</body</htmlStevenBey.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();
本文介绍了几种防止页面刷新,导致重复提交数据的方法。
a.使用服务器端的 Response.Redirect(YourPage);
b.使用客户端脚本 <script language=javascriptlocation.href='yourPage';</script
这两种方法的缺点是如果要保留页面数据不太方便,如果不用保留可以采用。
2、操作完毕设置一个Session,进入页面时判断这个Session是否为null,如果不是表示已经提交过了,但是缺点就是这个页面无法再提交了,必须在别的页面清空这个Session。
3、是从网上搜索到的一种方案,学习并共享一下:
DetectRefresh.aspx
===========================
<%@ Page Inherits=StevenBey.Web.UI.Page %<html<head<titleDetecting Page Refresh [Demo]</title</head<body<form runat=server
<asp:button Text=Test Refresh runat=server /</formIsRefresh = <%= IsRefresh %</body</htmlStevenBey.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();
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询