为什么在ASP.NET中刷新页面时会执行按钮单击事件?

时间:2010-03-04 13:52:29

标签: asp.net

在我的ASP.Net网站上我有一个按钮。当我点击按钮然后通过浏览器重新加载页面时,按钮的点击事件会触发。有问题,请帮助我。

7 个答案:

答案 0 :(得分:18)

如果我理解正确的话。

您有一个带有按钮的网络表单。

按下导致回发的按钮,按下按钮的事件处理程序即可执行。

然后你点击刷新,页面再次执行按钮事件处理程序。

原因是您刷新了发送到服务器的最后信息。哪个是__doPostback中的按钮点击信息。这就是为什么你再次看到按钮发生的事件。

这是一个article,讨论如何通过回发检测刷新。

答案 1 :(得分:4)

这是因为点击该按钮会向您的页面发送POST请求。 POST数据保存在http标头中,当您刷新时,它会再次发送到服务器。

当您尝试刷新页面时,您的浏览器应该发出警告。

答案 2 :(得分:3)

这是设计的。当您单击服务器端按钮(具有runat="server"属性)时,单击将导致回发,并且将触发按钮单击事件。

如果您需要某些客户端行为,则需要使用OnClientClick属性,如this MSDN文章(如何:响应客户端脚本中的按钮Web服务器控件事件)中所述。 / p>

答案 3 :(得分:2)

如果这对某人非常重要,那么他们可以通过Response.Redirect()再次刷新页面。这是我能找到的最简单的解决方案。

答案 4 :(得分:0)

我有同样的问题,它通过将按钮设置为updatePanel的asp:AsyncPostBackTrigger来解决。

答案 5 :(得分:0)

如果您要刷新部分页面,请将控件置于UpdatePanel内,如果控件导致PostBack

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
     <ContentTemplate>
        <asp:Button CssClass="btn btn-default" 
          onClick="uploadAttachmentToList" runat="server" 
          ID="btnUpload" ClientIDMode="Static" Text="Upload" 
        />
     </ContentTemplate>
</asp:UpdatePanel>

答案 6 :(得分:0)

解决此问题的最简单方法是使用Response.Redirect(Request.RawUrl)将页面重定向到某个网址或刷新当前页面;