第一种:
在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中防止刷新页面造成表单重复提交 在Web应用程序开发中,特别是在使用ASP.NET进行网站构建时,一个常见的问题是表单重复提交。这通常发生在用户通过按下浏览器的F5键来刷新页面的情况下,此时之前的表单...
在描述中提到的“采用Session存储隐藏的状态,提交时判断状态的一致性”,这是防止重复提交的一种有效技术。具体步骤如下: 1. **状态存储**:当用户首次提交表单时,将一些关键的数据或一个唯一的标识符存储到...
本知识将详细介绍使用客户端属性来防止重复提交的技术实现,如使用UseSubmitBehavior属性和OnClientClick事件。 首先,UseSubmitBehavior属性通常用于指示***页面框架在回发后是使用客户端还是服务器端提交行为。...
- 使用HTTP-only cookies:存储一个提交标志,当表单提交后设置此标志,后续请求检查该标志以防止重复提交。 - **结合服务器端和客户端验证**:为了增加安全性,通常建议同时在服务器端和客户端进行验证。客户端...
因此,实现一个防止重复提交的机制就显得尤为重要。 从给定的文件信息中,我们可以提取以下几个知识点: 1. **JavaScript防止重复提交的实现方法**: 通过在客户端使用JavaScript来控制重复提交的问题是一种简单...
在ASP.NET开发中,防止重提交(也称为双重提交或重复提交)是一个重要的问题,它涉及到用户可能在页面刷新或网络延迟时意外地多次提交相同的数据。这可能导致数据不一致性和逻辑错误。本文将深入探讨如何在ASP.NET...
当初设计这个控件的目的是这样的,我们在平常的网页设计中,很多时候使用了带图片的按钮,但是在ASP.NET中,普通按钮(Button)和图片按钮(ImageButton)都是没有防重复提交的属性,后来普通按钮的防重复控件做好了,...
否则,清除所有输出并结束响应,防止重复提交。 4. 在提交按钮的点击事件中,设置`IsSubmit`为`true`,并重定向回当前页面。 ### 3. 自定义Page类检测刷新 这是一种较为高级的解决方案,涉及到对ASP.NET框架的...
在ASP.NET开发中,防止用户通过浏览器的后退按钮重复提交表单是一个常见的问题,因为这可能导致数据的不一致性和数据库的错误。以下是一些防止这种情况的方法和相关的知识点: 1. **利用HTTP响应头控制缓存** - `...
### ASP.NET 使用 FileUpload 控件上传图片的知识点详解 #### 一、概述 在ASP.NET Web应用程序中,经常需要处理用户上传的文件,尤其是图片。本文将详细介绍如何使用ASP.NET中的`FileUpload`控件来实现图片的上传...
同时,为了防止刷新导致计数重复,我们可以结合HTTP缓存机制或JavaScript防止页面重复提交。 在"examples"目录中,可能包含了以下内容: 1. `Counter.aspx` - 一个简单的ASP.NET页面,展示了如何在页面上使用...
4. **ASP.NET AJAX控件工具箱**:除了基本的ASP.NET控件,还可以利用ASP.NET AJAX Control Toolkit中的ValidatorCalloutExtender控件,它能以弹出提示的方式显示验证错误,提升用户体验。 5. **性能优化**:为了...
在Asp.net开发中,验证码控件是一种常用的安全机制,用于防止自动机器人或者恶意脚本进行非法操作,如批量注册、频繁提交表单等。它通常要求用户输入图像上显示的一串随机字符,以此来验证用户是真实的人而不是程序...
ASP.NET 多次提交问题通常出现在用户快速连续点击提交按钮或者由于网络延迟导致的页面刷新时,这可能会导致数据重复录入或系统异常。为了解决这个问题,我们可以采取一些策略来防止这种多次提交的情况。 首先,我们...
可能还会涉及防止重复提交、垃圾评论过滤等策略。 5. Asp.Net MVC框架:MVC框架提供了一系列的特性,如路由系统,使得URL更加友好;过滤器,可以用于全局或局部的请求处理,比如日志记录、授权检查等;以及视图引擎...
在Asp.Net开发中,确保用户只提交一次表单是...通过这种方式,我们可以确保在Asp.Net应用程序中避免重复提交,并提供一个友好的用户提示,告知他们请求正在处理。这种方法对于提升用户体验和防止数据冗余都十分有效。