如何知道上一页?(关于IT技术)

3

我有两个不同的页面,但都跳转到相同的页面X。当我到达页面X时,是否可以知道上一个页面是什么?我的意思是,重定向到页面X的页面是什么。

例如:我在page1.aspx上,我有一个按钮,可以重定向到bonus.aspx,但我也有page2.aspx,它有另一个按钮,但也会重定向到bonus.aspx。 是否可能知道重定向到bonus.aspx的页面是什么? 上一个页面是什么?

我需要知道这一点,因为我将根据前一页修改bonus.aspx的内容。

我只想这样做:

protected void bonus_load(object sender, EventArgs e)
  {
     if(PreviousPage.Name == "page1.aspx")
         {
           //Do Something
         }
     else if(PreviousPage.Name == "page2.aspx")
         {
            //Do Other Things
         }
  }

注意:我需要在button_OnClick=""事件上使用它。


如果您使用Server.Transfer而不是Response.Redirect,则会有一个名为“PreviousPage”的属性,它不为null。然后,您还可以访问上一页的所有控件及其ViewState - Tim Schmelter
@TimSchmelter 嗯...我会搜索一些关于它的文档。这很容易吗? - Ghaleon
1
你可以将前一页作为查询字符串参数传递,并将其存储为隐藏字段。如果不简单地解决这个上一页问题,它很快就会变成一个非常棘手的问题。 - Jonathan
@Ghaleon:PreviousPage 属性的文档?我会从MSDN开始。 - Tim Schmelter
3个回答

6
protected void bonus_load(object sender, EventArgs e)
{
    string previousPage = HttpContext.Current.Request.UrlReferrer.AbsolutePath;

    if (previousPage == "/page1.aspx")
    {
        //Do Something
    }
    else if (previousPage == "/page2.aspx")
    {
        //Do Other Things
    }
}

实际上并没有起作用...它会返回当前页面,而我需要返回前一个页面。我有一个“返回”按钮,当我点击它时,字符串referrer会获取当前页面的值。因此,它永远不会进入if语句...我该怎么办?谢谢。 - Ghaleon
@Ghaleon,你能发布一下page1.aspxpage2.aspx的代码,这些代码负责将页面重定向到bonus.aspx吗? - Marek Grzenkowicz

6
Page_Load函数中:
   if(!Page.IsPostback)
   {
     var referrer = Request.UrlReferrer.ToString();
   }

更新: 以下方法调用将以类似于“/Page1.aspx”的格式返回结果。
var referrer = Request.UrlReferrer.AbsolutePath

工作了...但是它给我整个URL,你知道怎么只获取页面的名称吗?例如:page1.aspx?谢谢! - Ghaleon
2
然后您需要使用segments属性。请参考:http://msdn.microsoft.com/zh-cn/library/system.uri.segments(v=vs.110).aspx - daryal
嗨 @daryal。segments property 运行得非常完美!!为了解决问题,我将值存储在一个 Visible=False 的标签上,这可能会成为未来的问题吗? - Ghaleon
1
@Ghaleon,你可以将值存储在ViewState或会话中,而不是保存在标签中。我建议您使用ViewState:ViewState["Url"] = "asdqwe"。 - daryal

1

问题是...我需要在一个按钮上使用它,当我点击这个按钮时,请求的页面将成为当前页面...我不知道该怎么办 =s - Ghaleon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接