您的位置:首页 > 编程语言 > ASP

ASP.Net中防止页面刷新重复提交的几种方法

2011-08-30 10:42 881 查看
1、也是最简单和最常用的办法,就是使用转向页面语句,分两种:

a.使用服务器端的 Response.Redirect("YourPage");

b.使用客户端脚本 <script language=javascript>location.href='yourPage';</script>

这两种方法的缺点是如果要保留页面数据不太方便,如果不用保留可以采用。

在提交以后写入

Response.Write("<script>alert('提交按钮防止重复刷新');location.href=location.href</script>")

2、操作完毕设置一个Session,进入页面时判断这个Session是否为null,如果不是表示已经提交过了,但是缺点就是这个页面无法再提交了,必须在别的页面清空这个Session。

3、是从网上搜索到的一种方案,学习并共享一下:

DetectRefresh.aspx

===========================

<%@ 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;

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: