3. 使用 returnUrl 参数 (最稳健)
这是最可靠、最可控的方法,尤其适用于登录、编辑等场景。通过在跳转链接中附加一个参数来明确指定返回地址。
实现步骤:
从 A 页面跳转到 B 页面时,将 A 页面的地址作为参数传递:
html
预览
<!-- 在 A.aspx 页面中 -->
<asp:HyperLink ID="HyperLink1" runat="server"
NavigateUrl='<%# "B.aspx?returnUrl=" + HttpUtility.UrlEncode(Request.RawUrl) %>'>
前往 B 页面
</asp:HyperLink>
在 B 页面处理完后,读取 returnUrl 参数并跳转回去:
csharp
编辑
// 在 B.aspx.cs 页面中
protected void btnSave_Click(object sender, EventArgs e)
{
// 处理保存逻辑...
string returnUrl = Request.QueryString["returnUrl"];
if (!string.IsNullOrEmpty(returnUrl))
{
Response.Redirect(returnUrl);
}
else
{
Response.Redirect("~/Default.aspx");
}
}
优点: 完全由开发者控制,不依赖浏览器行为,非常精准可靠。
缺点: 需要在每个跳转链接上手动添加参数。
-
实现步骤:
-
从 A 页面跳转到 B 页面时,将 A 页面的地址作为参数传递:
1<!-- 在 A.aspx 页面中 --> 2<asp:HyperLink ID="HyperLink1" runat="server" 3 NavigateUrl='<%# "B.aspx?returnUrl=" + HttpUtility.UrlEncode(Request.RawUrl) %>'> 4 前往 B 页面 5</asp:HyperLink>
-
在 B 页面处理完后,读取 returnUrl 参数并跳转回去:
1// 在 B.aspx.cs 页面中 2protected void btnSave_Click(object sender, EventArgs e) 3{ 4 // 处理保存逻辑... 5 6 string returnUrl = Request.QueryString["returnUrl"]; 7 if (!string.IsNullOrEmpty(returnUrl)) 8 { 9 Response.Redirect(returnUrl); 10 } 11 else 12 { 13 Response.Redirect("~/Default.aspx"); 14 } 15}
-
优点: 完全由开发者控制,不依赖浏览器行为,非常精准可靠。
-
缺点: 需要在每个跳转链接上手动添加参数。