ASP.NET 和 C#:与 Response.Redirect 结合使用时不显示 MessageBox

ASP.NET and C#: MessageBox not shown when used in combination with Response.Redirect

在我的 ASP.NET 网络表单中,我需要通知用户他们的反馈已提交。我打算在我的代码隐藏中这样做:

protected void lblButton_Click(object sender, EventArgs e) 
{

  Response.Redirect(Request.RawUrl); //Refresh page 
  Messagebox("Feedback submitted. Click OK to go back.");
  return;
}

public void Messagebox(string xMessage)
{
  Response.Write("<script>alert('" + xMessage + "')</script>");
}

但是,当我 运行 这样做时,我的页面总是刷新而没有显示消息框。

如果我将 Response.Direct 与 Messagebox 交换,则没有任何变化。

我做错了什么?

我认为您必须在代码中使用 Response.Redirect(URL,false)..

protected void lblButton_Click(object sender, EventArgs e) 
    {

      Response.Redirect(Request.RawUrl,false); //Refresh page 
      Messagebox("Feedback submitted. Click OK to go back.");
      return;
    }

Response.Redirect(URL,false):客户端被重定向到一个新页面,服务器上的当前页面将继续处理。

Response.Redirect(URL,true):客户端被重定向到一个新页面,但是当前页面的处理被中止。

再次未显示消息然后尝试使用.....Javascript 警报...

protected void lblButton_Click(object sender, EventArgs e) 
{
Response.Redirect(Request.RawUrl,false); //Refresh page 
ScriptManager.RegisterClientScriptBlock((Page)(HttpContext.Current.Handler), typeof(Page), "alert", "javascript:alert('Feedback submitted. Click OK to go back.');", true);
return;
}

警报是特定于页面的,因此即使显示警报对话框,它也会在客户端重定向后立即消失。

您需要的是从 lblButton_Click 返回的确认页面,其中有一个 'Ok' 按钮、一个超链接或一个定时 js 函数,可以将地址更改为您想要的页面重定向到。

根据我得到的其中一个建议,我最终使用了一个带有从 aspx 文件调用的“确定”按钮的确认页面:

<asp:Button runat="server" ID="btnSave" Click="btnSave_Click" Text="Save"
    OnClientClick="return confirm('Are you sure you want to do this thing?');"  />