【问题标题】:Maintain Navigation stack of Response.Redirect in a asp.net application在 asp.net 应用程序中维护 Response.Redirect 的导航堆栈
【发布时间】:2016-11-28 08:32:18
【问题描述】:

我想在 response.redirect 之前设置一个会话变量值,并在该会话变量中存储我要重定向到的页面 url。

所以从我被重定向的页面我可以将用户重定向回其最后一页。

我也尝试了 Urlreferer 属性,但我总是在该属性中获取目标页面 URL,而不是原始页面 URL。

我已经向 Application_EndRequest 添加了处理程序,但是当我尝试在该会话中设置会话变量值时,该会话中的值被设置为空。

所以我可能需要在 Response.Redirect 之后但在会话结束之前捕获一个事件。

所以请帮助我实现这一目标。

【问题讨论】:

  • urlreferer会得到上一页的url
  • 正如我提到的,它只包含目标页面 url,所以假设我从 A.aspx 重定向到 B.aspx。但是在 B.aspx 上,当我检查 urlreferrer 时,我期望 A.aspx url 但它显示 B.aspx 不确定是什么覆盖了它。
  • 请参考link
  • 你能把你的代码贴在你使用 UrlReferrer 的地方吗?
  • 我尝试了两个:Response.Redirect(Request.UrlReferrer.AbsoluteUri) 和 Response.Redirect(Request.UrlReferrer.ToString()) 这就是为什么我打算将它保留在会话变量中

标签: asp.net session redirect


【解决方案1】:

假设你有两个页面 A.aspx 和 B.aspx
在页面 A 中的按钮的 OnClick 中,您正在启动一个 Response.Redirect 到页面 B.aspx,如下所示。

Response.Redirect("B.aspx");

现在在 B.aspx 的 page_load 事件中,如果 Page 是第一次加载,则在会话变量中获取 Request.UrlReferrer 变量。

 protected void Page_Load(object sender, EventArgs e)
  {
      if (!IsPostBack)
       {
         Session["PreviousPage"] = Request.UrlReferrer.ToString();
       }
  } 

现在,即使页面生命周期是由任何 asp 控件触发的,因为它不是一个新的回发,那么在这种情况下,你不会在会话中使用错误的值。 希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2014-01-21
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    • 1970-01-01
    • 2019-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多