第一种:
在Button按钮中加入:
OnClientClick="this.disabled=true;this.form.submit();" UseSubmitBehavior="False"
第二种:
Response.Redirect("Default.aspx");
Response.Write("location.href='Default.aspx'?id=111");
第三种:
方法的原理就是在每次处理请求(比如按钮的回发事件)后,都随机生成一个字符串,这个字符串分别存放在Session和响应页面中,在开始处理用户请求时,判断传上来的字符串和Session中的字符串是否匹配,如果是重复提交,客户端传上来的字符串就是个旧的(表单隐藏域里面的值是旧),显然和Session中的字符串不同。
也可以自定义一个控件方便调用。
具体步骤如下:
1、在进入页面的时候,随机生成个字符串,这个保存到session并且写到页面的控件上。
2、在提交后,判断你的session中的字符串和提交上来的字符串是否相同,相同就进行处理;不相同说明是重复提交,不进行相关处理,写个alert提醒不能重复提交。
3、然后重复第1步。
下面是测试页面的源代码。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>test</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
<asp:HiddenField ID="HidSign" runat="server" />
</div>
</form>
</body>
</html>
public partial class test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
UpdateSign();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
if (Session["HidSign"].ToString() == HidSign.Value)
{
this.ClientScript.RegisterStartupScript(this.GetType(), "startup", "alert('更新成功!')", true);
UpdateSign();
}
else
{
this.ClientScript.RegisterStartupScript(this.GetType(), "startup", "alert('请勿重复提交!');", true);
UpdateSign();
}
}
private void UpdateSign()
{
HidSign.Value = DateTime.Now.ToString("ffffff");
Session["HidSign"] = HidSign.Value;
}
}
如果觉得session耗资源,也可以声明全局的静态变量,用他替换session
分享到:
相关推荐
asp.net 页面防止重复提交(可用)
ASP.NET中防止刷新页面造成表单重复提交
在Button或其他控件加上下面两个属性:UseSubmitBehavior="false"及OnClientClick设置控件为不可用即可,感兴趣的朋友可以参考下哈
asp.net页面button按钮防止重复提交的方法,大家参考使用吧
防止表单重复提交。判断是新打开的页面还是刷新的页面 判断是新打开的页面还是刷新的页面
在网上搜 一下,可以找到很多关于这方面的资料,其中有一篇是来自MSDN上的一种解决方法: ...网上最多的解决此类问题的方法就是不保存缓存,即提交后表单上的数据不会被浏览器的缓存保存,如果此时
防止用户通过后退按钮重复提交表单 <% response.Buffer=true response.Expires=0 response.ExpiresAbsolute=now()-1 response.CacheControl=”no-cache” %> response.Buffer=true的意思就是指明输出页面是否...
Asp.net防止重复提交的自定义按钮,点击后如果没收到服务器响应,不能重复提交
本文分为前台和后台代码实现避免重复提交和弹出提示框效果,代码简单易懂,非常不错,具有参考借鉴价值,需要的的朋友参考下
SubmitOncePage:解决刷新页面造成的数据重复提交问题 SharpRewriter:javascript + xml技术利用#实现url重定向 采用XHTML和CSS设计可重用可换肤的WEB站点 asp.net的网址重定向方法的比较:面向搜索引擎友好 也谈 ...
由于刷新提交表单,实际上提交的就是上一次正常提交的表单,所以我们只要做一个标志,判断出是新表单还是上一次的旧表单就可以分辨出是否进行了重复提交操作。 实现方法: 在页面上放置一个Hidden域,当页面第一次...
点击后禁用的按钮,防止重复提交,自带Confirm。
最近想给我的框架加一种功能,就是比如给一个方法加一个事务的特性Attribute,那这个方法就会启用事务处理。给一个方法加一个缓存特性,那这个方法就会进行缓存。 这个也是网上说的面向切面编程AOP。...
前段时间遇到了需要禁用刷新的需求,f5按钮就不说了,简单的js就能把它禁用,但是工具条上的刷新按钮却防止不了啊,不过本文介绍的一种方法却可以解决此问题,感兴趣的朋友可以了解下啊,希望本文对你有所帮助
对“添加”、“提交”、“保存”、“更新”等按钮需要对数据库进行写操作的按钮,一定要在页面初始化时加载脚本,防止多次重复点击
15.2.2 如何在ASP.NET 3.5中调用Alexa的数据 170 15.3 自定义统计模块 171 15.3.1 设计保存IP数据的数据库 171 15.3.2 设计显示IP信息的界面 173 15.3.3 显示最近访问站点的10个IP信息 174 15.3.4 实现IP...