【问题标题】:Response.redirect on Popup to go to Main pageResponse.redirect on Popup 转到主页
【发布时间】:2009-05-29 10:31:58
【问题描述】:

当我在父窗口上选择一个链接时,我会打开一个弹出页面。如果弹出的页面加载处理程序发生异常,则错误应该转到父窗口,而不是弹出页面。如果弹出页面没有发生异常,它只会加载弹​​出页面的内容。

一条错误消息来自一个 Asp 页面。

弹窗catch块中的代码:

catch(Exception ex)
{
    Response.Redirect("");
    Response.End();
}

【问题讨论】:

    标签: c# asp.net modalpopups


    【解决方案1】:

    您不能使用Response.Redirect 来决定页面的加载位置。这是在请求发送到服务器之前决定的,所以当服务器代码开始运行时,改变页面的去向已经太晚了。

    如果您想关闭弹出窗口并在父窗口中加载页面,则必须将 Javascript 代码写入执行此操作的弹出窗口。

    例子:

    catch (Exception ex) {
       Response.Write(
          "<html><head><title></title></head><body>" +
          "<script>" +
          "window.opener.location.href='/ErrorPage.aspx?message=" + Server.UrlEncode(ex.Message) + "';" +
          "window.close();" +
          "</script>" +
          "</body></html>"
       );
       Response.End();
    }
    

    【讨论】:

      【解决方案2】:

      如果您正在处理 catch 块中的错误,您可以做什么 - 声明一个 javascript 变量并在该变量中设置错误文本。

      var errorDescription = ""; //Will hold the error description (in .aspx page).
      

      如果发生错误,请在 catch 块中执行此操作 -

      try
      {
          //Code with error
      }
      catch(Exception ex)
      {
          ScriptManager.RegisterStartupScript(this, this.GetType(), "ErrorVariable", string.Format("errorDescription = '{0}'; CloseWindow();", ex.Message), true);
      }
      

      上面的代码会做什么——设置错误描述,并在你的aspx页面上调用CloseWindow()函数。该函数将包含以下代码行 -

      function CloseWindow() {
          window.parent.window.SetError(errorDescription);
          self.close();
      }
      

      此函数将调用父窗口的函数并自行关闭。 SetError() 函数可以以任何你喜欢的方式显示错误。

      【讨论】:

        【解决方案3】:

        我认为使用 javascript 弹出窗口并通过 AJAX 进行请求而不是使用新窗口和整页请求周期会更好的用户体验。在 javascript 中执行此操作使您能够将所有交互保持在同一页面上,并使在“主”界面中获取错误消息变得微不足道。在许多其他方法中,您可以使用 jQuery 提供 AJAX 接口和 dialog 插件来管理模式对话框。

        【讨论】:

          猜你喜欢
          • 2023-03-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-22
          相关资源
          最近更新 更多