如何在单击 ASP.NET WebForms 按钮时禁用它,并在回发完成后再次启用它?

Vol*_*rix 1 c# asp.net user-interface background-process

我想做的是能够在按下按钮后立即禁用该按钮,执行操作,然后重新启用该按钮。看起来很简单,但我的按钮在我需要时不会更新。我尝试了更新面板,但我不确定我是否正确使用它。难道我做错了什么?或者有更好的方法来实现这一目标吗?

超文本标记语言

<asp:UpdatePanel runat="server" ID="updateSubmitButton">
    <ContentTemplate>
        <a href="#resultsSet"><asp:Button ID="btnSearch" CssClass="CrossoverButton" runat="server" Text="Search" OnClick="btnSearch_Click" /></a>
    </ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)

C#

protected void btnSearch_Click(object sender, EventArgs e)
{
    btnSearch.Enabled = false;
    updateContent();

    // Do a lengthy operation here.

    btnSearch.Enabled = true;
}
Run Code Online (Sandbox Code Playgroud)

Nat*_*ate 6

您将需要使用客户端技术来禁用该按钮。这是因为当您单击该按钮时,页面会向自身发送回消息,这会告诉服务器执行btnSearch_Click. 根据您的代码,这将

  1. 禁用按钮
  2. 更新内容
  3. 重新启用按钮

所有这一切都发生在服务器上。只有在该方法执行完成后,才会将上下文返回到页面。

为了禁用单击按钮,您需要尝试以下操作:

<asp:Button ID="btnSearch" CssClass="CrossoverButton" runat="server" Text="Search"
    OnClientClick="this.disabled = true;"
    UseSubmitBehavior="false" />
Run Code Online (Sandbox Code Playgroud)
   OnClientClick="this.disabled = true;"
Run Code Online (Sandbox Code Playgroud)

此行注册客户端单击处理程序,以禁用自身。

   UseSubmitBehavior="false"
Run Code Online (Sandbox Code Playgroud)

此行告诉 ASP.NET 在表单发布中包含禁用的元素,以便服务器知道哪个控件注册了回发。

另请参阅 - /sf/answers/828243741/