【发布时间】: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
我在 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
在你的 C# 代码中写下这个:
Response.Write("<script>history.go(-1);</script>");
【讨论】:
以शेखर为例
我建议执行以下操作,并在回发时避免 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。
希望对你有帮助。
【讨论】:
如果您使用的是 asp.net,请记住
javascript:history.go(-1)
和
window.history.back()
两者都将带您返回页面。
但上一页不会完全是上一页。
假设您在页面Default.aspx 上,并且有一个asp:button
现在,当您单击按钮并返回 Default.aspx
在这种情况下,您的上一页仍然是您的 Default.aspx
再举一个例子
您有两个页面 Default1.aspx 和 Default2.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);
}
【讨论】:
我整个周末都在看这个,但没有找到我想要的答案。问题是,在回发 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>
【讨论】:
我找到了这个例子
<input type="button" value=" <-- BACK " onclick="history.go(-1);return false;">
只要把这个放在你的页面上,它就可以工作了。
【讨论】:
转到上一页
第一种方法
<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........
【讨论】:
您应该添加一个关于 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/>");
}
这是关于使用按钮转到上一页,您可以根据自己的更改进行修改。
【讨论】:
使用此代码
<html>
<head>
<script>
function goBack()
{
window.history.back()
}
</script>
</head>
<body>
<a href="#" onclick="goBack()">Back</a>
</body>
</html>
【讨论】:
你可以用这个:
<a href='javascript:history.go(-1)'>Go Back to Previous Page</a>
【讨论】: