我有一个如下的按钮,

<asp:Button ID="pagerLeftButton" runat="server" OnClientClick="disable(this)" onclick="pager_Left_Click" Text="<" />

当我像那样使用我的按钮时,onclick没有启动.当我移除OnClientClick时,onclick正在启动.

我需要做的是,在回发期间禁用该按钮,并在回发结束后启用它.

编辑:其他信息:

我在我的触发函数中添加了断点是c#部分,我正在调试,它们不能确定是否触发.这些函数类似于

protected void pager_Left_Click(object sender, EventArgs e)
{
//Do smthing.
}
protected void pager_Right_Click(object sender, EventArgs e)
{
//Do smthing.
}

当我点击我的按钮时,它会被禁用1-2秒并自动启用,但我不确定为什么会启用.我没有添加任何要再次启用的部件.

推荐答案

从这article on web.archive.org个开始:

诀窍是使用按钮控件的OnClientClick和UseSubmitBehavior属性.还有其他方法,包括在服务器端编写代码来添加属性,但我认为这种方式的简单性更有吸引力:

<asp:Button runat="server" ID="BtnSubmit"  OnClientClick="this.disabled = true; this.value = 'Submitting...';"   UseSubmitBehavior="false"  OnClick="BtnSubmit_Click"  Text="Submit Me!" />

OnClientClick允许您添加客户端OnClick脚本.在这种情况下,JavaScript将禁用button元素,并将其文本值更改为进度消息.回发完成后,新呈现的页面将使按钮恢复其初始状态,而无需进行任何额外工作.

在客户端禁用submit按钮的一个缺陷是,它会取消浏览器的提交,从而取消回发.将UseSubmitBehavior属性设置为false将说明问题.NET注入必要的客户端脚本来启动回发,而不是依赖浏览器的表单提交行为.在这种情况下,它注入的代码是:

__doPostBack('BtnSubmit','')

这将添加到OnClientClick代码的末尾,为我们提供呈现的HTML:

<input type="button" name="BtnSubmit"  onclick="this.disabled = true; this.value ='Submitting...';__doPostBack('BtnSubmit','')"  value="Submit Me!" id="BtnSubmit" />

这样可以在回发完成时提供很好的按钮禁用效果和文本处理效果.

Asp.net相关问答推荐

使用进程外会话状态的 ASP.NET 应用程序中的 SQL Server 连接问题

如何在 ASP.NET WebForms 中实现 TDD

如何在 IISExpress 上使用带有 localhost 的子域?

用于链接字符串中的 url 的 C# 代码

如何更改 .ASPX 自动格式化设置 (Visual Studio)

倒带请求正文流

使用 JavaScript 禁用 ASP.NET 验证器

相当于服务器端的 ASP.NET 包括

在 IIS 上托管 ASP.NET 5 项目

如何在 IIS 7.5 上使用 ASP.NET 表单身份验证保护静态文件?

将通用列表绑定到转发器 - ASP.NET

如何获取 ASP.NET 应用程序的完整虚拟路径

在 ASP.NET 中实现 404 的最佳方法

在 ApiController 中添加自定义响应头

将新行添加到数据表的顶部

如何在 ASP.NET MVC 中设置时区?

URL 路由、图像处理程序和潜在危险的 Request.Path 值

如何在服务器控件属性中使用 ASP.NET <%= 标签?

在 ASP.NET 中获取服务器的 IP 地址?

ModelClientValidationRule 冲突