【问题标题】:Response.Redirect does not change the URL for Page1.aspx to Page2.aspxResponse.Redirect 不会将 Page1.aspx 的 URL 更改为 Page2.aspx
【发布时间】:2013-06-07 07:16:12
【问题描述】:

我正在使用Response.Redirect 将用户从 ProductListPage.aspx 重定向到 DocumentListPage.aspx 并使用查询字符串传递一个 id。

protected void Click_btnHiddenRow(object sender, EventArgs e)
{
     Response.Redirect("DocumentListPage.aspx?id=" +
     this.txtSelectedID.Value);
}

页面内容正在发生变化,因此用户实际上被重定向到第二个页面,也传递了 id,但是浏览器中的 URL 仍然是http://localhost:60559/Pages/ProductListPage.aspx

我遇到了一些其他不相关的异常情况,我认为这可能是问题所在。

使用Response.Redirect时,URL的情况是否正常?

~~~

我还想添加一个可能与实际情况相关的异常情况。

DocumentListPage.aspx 页面中,我有一个带有代码隐藏事件处理程序的按钮。但是,当单击此按钮时,它不会进入事件方法,而是会触发 ProductListPage.aspx 的 Page_Load 事件方法中的断点。

【问题讨论】:

    标签: asp.net response.redirect


    【解决方案1】:

    使用Response.Redirect时,URL的情况正常吗?

    是的,如果您使用 AJAX 请求调用此 Click_btnHiddenRow 函数。目前尚不清楚此事件处理程序绑定到什么控件,但如果您使用 AJAX 调用它,那将解释该行为。

    【讨论】:

    • 其实 btnHiddenRow 是一个隐藏按钮。我有一个表,当用户单击其中一行 btnHiddenRow 时,会通过 JQuery 进行单击。你认为这可能是问题吗?如果是 - 任何解决方法的想法?
    • 是的,这正是问题所在。解决方法是在 jQuery AJAX 调用的成功回调中而不是在服务器上执行重定向。以下是使用 javascript 重定向的方法:window.location.href = '/DocumentListPage.aspx?id=123';。但是如果你要重定向,那么使用 AJAX 绝对没有意义。 AJAX 的全部意义在于保持在同一页面上并仅刷新其中的一部分。因此,作为一种解决方法,我建议您删除 AJAX 调用并执行完整的回发到服务器,您将能够像当前一样重定向。
    • 已修复! :) 非常感谢@Darin Dimitrov
    【解决方案2】:

    这种情况对于Server.Transfer 来说是正常的,但对于Response.Redirect 来说是不正常的。重定向向浏览器发送以下响应:

    HTTP 1.0 302 Object Moved 
    Location: http://example.com
    

    导致它触发新资源的 GET 请求。从事件处理程序Click_btnHiddenRow(隐藏部分)来看,Darin 可能是对的——您正在执行 ajax 请求?

    【讨论】:

      猜你喜欢
      • 2012-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-15
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多