在 ASP.NET 中多次单击同一个重定向按钮会导致奇怪的结果

Clicking multiple times on the same redirect button in ASP.NET causes weird results

当我多次单击使用 ASP.NET 执行服务器端重定向的按钮时,事情会变得很奇怪。有时我会收到 ViewState 错误,有时页面只是部分加载。

按钮的OnClick事件代码很简单:

HttpContext.Current.Response.Redirect(targetUrl);

如果我有类似的东西:

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        Something();
    }
}

在我重定向到的页面中,如果快速连续按下按钮超过一次,则不会调用 Something() 函数。

这正常吗?快速多次按下按钮时出现这些奇怪问题的原因可能是什么?

好的,据我所知,我可以如下解释奇怪的结果: 第一次单击该按钮时,服务器将进行重定向,因为这是您第一次从另一个页面访问该页面,所以它不会是回发,但是您第二次单击服务器中的按钮时,您将已经被重定向并且它会将请求视为回发,因为在服务器上你已经在该页面上,因为它是第一次重定向你,最后你将得到最后一次点击的响应,这将是服务器中的回发。

为避免此问题,您应该在按钮上显示一个加载面板,或者在使用 javascript 转到服务器之前禁用该按钮。