方法一:
只在按钮前台代码中增加OnClientClick="this.disabled=true;" UseSubmitBehavior="False"即可。
方法二:
protected void Page_Load(object sender, EventArgs e)
{
Button1.Attributes.Add("onclick", this.GetPostBackEventReference(Button1) + ";this.disabled=true;");
}
注:不要写在if (!Page.IsPostBack) 里,否则会脚本错误的。
过程就是单击按钮后将其置为disabled,即this.disabled=true。
虽然过程很简单,但是里面有个小技巧(我以前也不知道),就是Button控件里不常用的UseSubmitBehavior属性,要使Button单击后disabled,并且页面(form)还要提交,就必须把UseSubmitBehavior设为false,否则页面(form)将不会提交。
MSDN对UseSubmitBehavior的解释是:
使用 UseSubmitBehavior 属性来指定 Button 控件使用客户端浏览器的提交机制还是 ASP.NET 回发机制。默认情况下,此属性的值为 true,从而导致 Button 控件使用浏览器的提交机制。如果指定为 false,则 ASP.NET 页框架将客户端脚本添加到页面,以将窗体发送到服务器。
当 UseSubmitBehavior 属性为 false 时,控件开发人员可以使用 GetPostBackEventReference 方法来返回 Button 的客户端回发事件。GetPostBackEventReference 方法返回的字符串包含客户端函数调用的文本,可以插入到客户端事件处理程序中。
例如
<asp:Button ID="doPublishButton" runat="server" Text="发布" OnClick="doPublishButton_Click"
Height="30px" OnClientClick="this.disabled=true;" UseSubmitBehavior="False"/>
当UseSubmitBehavior为false时,会在输出的Html里看到
<input type="button" name="Issue1:doPublishButton" value="发布" onclick="this.disabled=true;__doPostBack('Issue1$doPublishButton','')" language="javascript" id="Issue1_doPublishButton" style="height:30px;" />
__doPostBack('Issue1$doPublishButton',''),就是asp.net加上去的。如果UseSubmitBehavior为true,就不会有这句话,页面(form)就不会提交。
分享到:
相关推荐
总的来说,防止ASP.NET页面的重复提交需要结合客户端和服务器端的多种策略,包括请求令牌、禁用按钮、状态跟踪、事务管理和前端反馈等。通过这些方法,可以有效地保护应用程序免受重复提交的影响,提高用户体验并...
在ASP.NET web应用程序...综上所述,防止表单重复提交是保证ASP.NET应用数据完整性的重要一环。通过综合运用服务器端和客户端的验证机制,以及区分新打开页面和刷新页面的策略,我们可以构建更健壮、更安全的Web应用。
在***中防止表单重复提交是一个常见的需求,尤其是在网络条件不佳或者用户操作不当(如多次点击提交按钮)的情况下。重复提交不仅会导致服务器重复处理相同的请求,造成资源浪费,还可能对数据库的完整性造成影响。...
### ASP.NET 防止页面被多次提交 在 Web 开发中,特别是在 ASP.NET 这样的框架下,防止页面被多次提交是一个常见的需求。当用户点击提交按钮后,可能会因为网络延迟、误操作等原因而重复点击提交按钮,导致数据被多...
在ASP.NET web应用程序中,"刷新重复提交"是一个常见的问题,它发生在用户点击浏览器的刷新按钮或者使用前进/后退导航时。这可能导致数据的不一致性和错误,因为服务器可能会收到相同请求的多次处理,而这些请求原本...
代码如下: <asp ID=”btnSubmit” runat=”server” UseSubmitBehavior=”false”... “2个属性 就可以防止多次提交 顺便求助一个问题 这样设置之后,Button1_Click事件执行完成这个禁用属性会变为false,也就是后台事件
在ASP.NET开发中,按钮级别的权限控制是一项重要的安全机制,它允许管理员对用户可以执行的操作进行精细化管理。本文将深入探讨如何通过自定义控件来实现这一功能。 首先,我们需要理解自定义控件在ASP.NET中的作用...
2. **ASP.NET Button**:定义了一个隐藏的ASP.NET按钮,用于服务器端事件处理。 3. **TextBox**:用于展示操作结果。 4. **JavaScript Function**:`aa()`函数在用户点击HTML按钮时触发,其功能包括: - 将按钮的...
3. **JavaScript禁用**:如果用户禁用了浏览器的JavaScript,ASP.NET的按钮可能无法正常工作,因为ASP.NET的按钮在客户端实际上是通过JavaScript模拟的。为了确保功能正常,可以添加一个备用的服务器端处理机制。 4...
在ASP.NET开发中,防止用户通过浏览器的后退按钮重复提交表单是一个常见的问题,因为这可能导致数据的不一致性和数据库的错误。以下是一些防止这种情况的方法和相关的知识点: 1. **利用HTTP响应头控制缓存** - `...
点击后禁用的按钮,防止重复提交,自带Confirm。
在ASP.NET开发中,有时我们需要控制用户的行为,例如防止他们使用浏览器的“后退”按钮回到之前的状态。这种需求可能出于各种原因,如保持数据一致性、保护敏感信息或避免重复提交。标题“ASP.NET屏蔽浏览器后退”所...
总的来说,ASP.NET管理系统是一个具备精细权限控制的Web应用,通过角色和按钮级别的权限设置确保了系统的安全性和可管理性。开发过程中,利用了ASP.NET框架的多种特性,如角色提供程序、会员服务、数据访问组件,...
4. **防止多次提交**:为了防止用户在等待期间多次点击按钮导致重复提交,通常会禁用已点击的按钮。在JavaScript中,可以设置按钮的`disabled`属性为`true`,在服务器端处理完毕后再恢复其可点击状态。 5. **异步...
尽管可以通过JavaScript禁用F5快捷键来防止一部分重复提交,但这并不能完全防止通过工具栏的刷新按钮引发的问题。为了彻底解决这一问题,本文提出了一种通过在服务器端实现的解决方案,并介绍了一种名为...
DoWork函数用于触发任务的执行,并禁用按钮以防止重复提交。 二、后台实现 在后台,我们使用ASP.NET的Handler来处理任务的执行。Handler是一个特殊的ASP.NET页面,它可以处理POST请求并返回数据。在本示例中,我们...
ASP.NET ViewState 是一种机制,主要用于在Web应用的页面往返行程中保持用户界面(UI)的状态。由于Web的本质是无状态的,每次用户请求页面时,服务器都会创建一个新的页面实例,而ASP.NET页面也不例外。这就意味着...
ASP.NET教程(基础版)是一套专为初学者设计的在线教学资源,旨在帮助学习者掌握使用C#语言开发ASP.NET应用程序的基础知识。本教程涵盖了ASP.NET的核心概念,包括Web表单、控件、事件处理以及数据库交互等关键点。 ...