【问题标题】:Hyperlink to go back to previous page in asp .net在 asp .net 中返回上一页的超链接
【发布时间】:2012-12-11 20:25:45
【问题描述】:

我在 asp .net 中有一个页面(http://localhost/error/pagenotfound).

页面中有一个链接,点击它必须回到我来自的上一页。

<a href="#">Go Back to Previous Page.</a> 

如何通过历史记录返回上一页

【问题讨论】:

    标签: c# asp.net .net asp.net-mvc asp.net-mvc-3


    【解决方案1】:

    在你的 C# 代码中写下这个:

    Response.Write("<script>history.go(-1);</script>");
    

    【讨论】:

      【解决方案2】:

      以शेखर为例

      我建议执行以下操作,并在回发时避免 url 上的任何循环。

      string from = Request.UrlReferrer.ToString();
      string here = Request.Url.AbsoluteUri.ToString();
      
      if(from != here)
          Session["page"] = Request.UrlReferrer.ToString();
      

      点击按钮

      object refUrl = Session["page"];
      if (refUrl != null)
          Response.Redirect((string)refUrl);
      

      这将始终保存您来自的 PAGE。

      希望对你有帮助。

      【讨论】:

        【解决方案3】:

        如果您使用的是 asp.net,请记住

        javascript:history.go(-1)
        

        window.history.back()
        

        两者都将带您返回页面。
        但上一页不会完全是上一页。

        例如

        假设您在页面Default.aspx 上,并且有一个asp:button
        现在,当您单击按钮并返回 Default.aspx
        在这种情况下,您的上一页仍然是您的 Default.aspx

        再举一个例子
        您有两个页面 Default1.aspxDefault2.aspx
        条件 1:- 单击 Default1.aspx 的按钮将您重定向到 Default2.aspx
        好的,您的上一页是Default1.aspx
        条件 2:- 点击 Default1.aspx 的按钮并在同一 Default1.aspx 页面上发回
        现在你之前的页面还是Default1.aspx


        编辑

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

        并按如下方式在后退按钮中使用它

         protected void Button3_Click(object sender, EventArgs e)
         {
              object refUrl = ViewState["RefUrl"];
              if (refUrl != null)
                  Response.Redirect((string)refUrl);
         }
        

        【讨论】:

        • 你有什么解决方案吗?
        • 是的,将您以前的页面名称置于视图状态。意味着您必须将其保存在某个地方供您使用。
        • 为您的回答编辑了我的答案
        • 谢谢,真正签名为正确答案的答案取决于 js 浏览器 API,这些 API 存在您所描述的问题,因此我建议任何人使用这种方法而不是第一种方法
        • 这个答案有一些限制。假设有一系列页面 P1 -> P2 -> P3。使用这种方法,您无法从 P3 回到初始页面 P1。
        【解决方案4】:

        我整个周末都在看这个,但没有找到我想要的答案。问题是,在回发 history.go(-1); 之后不会回到您想去的地方 - 即带您到达那里的页面(进行任何更改)。

        使用 Request.UrlReferrer.ToString();将重新加载您要返回的页面,您可能和我一样,不想丢失对页面所做的任何更改。在 2013 年的 Rizwan Gill 上面,他回答说你想回到 2、3 或 4 页,但他没有给出一个好的方法。

        执行此操作的最佳方法实际上是在页面被调用时使用弹出模式,如果您正在编写调用页面,但如果您想这样做并且有一个后退按钮,您将拥有记住每个回发并计算它们。

        所以,从您的隐藏字段开始(在您的 .aspx 文件中):

            <asp:hiddenfield id="fldPostbackCount"
                value="0" 
                runat="server"/>
        

        然后在每次回发时递增该值(在您的 .aspx.vb 文件中):

        Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
            If Not IsPostBack Then
                fldPostbackCount.Value = 1
            Else
                fldPostbackCount.Value = Int32.Parse(fldPostbackCount.Value) + 1
            End If
        
        End Sub  '  Page_Load() 
        

        (我相信 .cs 的人可以处理到 C 的转换)

        现在回到你的 .aspx 文件,你必须有一个历史按钮:

            <a href="javascript:history.go(-<%: fldPostbackCount.Value %>)" title="Back to Previous Page">Back to Previous Page</a>
        

        【讨论】:

        • 注意:我基本上做了与上面“相似”的事情,如果(在当前页面上)零回发,我做了一个 history.go(-1),并做了一个 history.go( -2) 如果在当前页面上进行了一个或多个回发(即通过用户单击带有 AJAX 调用的按钮等)。并且是 -1 还是 -2 的逻辑是在 javascript 中计算出来的(即 urlCountForBackButton = 2 放在 AJAX 调用成功/错误函数中)
        【解决方案5】:

        我找到了这个例子

        <input type="button" value=" &lt;-- BACK " onclick="history.go(-1);return false;">
        

        只要把这个放在你的页面上,它就可以工作了。

        【讨论】:

          【解决方案6】:

          转到上一页

          第一种方法

          <a href="javascript: history.go(-1)">Go Back</a>
          

          第二种方法

          <a href="##" onClick="history.go(-1); return false;">Go back</a> 
          

          如果我们想多退一步然后增加

          For going 2 steps back history.go(-2)
          For going 3 steps back history.go(-3)
          For going 4 steps back history.go(-4)
          and so on........
          

          【讨论】:

            【解决方案7】:

            您应该添加一个关于 onclick 的属性,如下所示:

            protected void Page_Load(object sender, EventArgs e)
            {
                yourButton.Attributes.Add("onClick", "javascript:history.back(); return false;");
            }
            
            protected void yourButtonClick(object sender, EventArgs e)
            {
                  Response.Write("Stackoverflow <br/>");
            }
            

            这是关于使用按钮转到上一页,您可以根据自己的更改进行修改。

            【讨论】:

              【解决方案8】:

              使用此代码

                  <html>
                  <head>
                  <script>
                  function goBack()
                    {
                    window.history.back()
                    }
                  </script>
                  </head>
                  <body>
              
                  <a href="#" onclick="goBack()">Back</a>
              
                  </body>
                  </html>
              

              【讨论】:

              • Window.history.Back 将转到同一个目标网页
              【解决方案9】:

              你可以用这个:

              <a href='javascript:history.go(-1)'>Go Back to Previous Page</a>
              

              【讨论】:

                猜你喜欢
                • 2020-06-03
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-11-14
                • 1970-01-01
                • 2015-06-16
                相关资源
                最近更新 更多