Rog*_*ira 6 c# url asp.net-mvc
我有一个主页面,当我返回到这个主URL时,我想保留一些过滤器.但在加载另一页后我想回去.通过获得它可以轻松完成@Request.UrlReferrer.但是,它仅在返回上一页时有效,我需要前两页.
我可以通过使用Session["ReturnToMainUrl"] = Request.UrlReferrer但只在离开第一页时设置它.
所以,如果我有3个级别:
网站\第3页
我现在在第2页或第3页,我想回到Website\page1?Filter = ABC
当我在第3页时,我可以使用Request.UrlReferrer返回到第2页,但是当我返回到第1页时,我需要保留参数,以便我从会话中加载.
我怎样才能以更智能的方式实现,而不是使用会话?
returnUrl当您从一个页面前进到另一个页面时,您应该递归地构建查询字符串参数。
例如:https: //dotnetfiddle.net/HtoX6b
var page0 = new Uri("http://www.example.com/page0");
Console.WriteLine("Page 0: {0}", page0);
var page1 = new Uri("http://www.example.com/page1?paramA=foo¶mB=bar&returnUrl=" + HttpUtility.UrlEncode(page0.ToString()));
Console.WriteLine("Page 1: {0}", page1);
var page2 = new Uri("http://www.example.com/page2?paramC=baz¶mD=qux&returnUrl=" + HttpUtility.UrlEncode(page1.ToString()));
Console.WriteLine("Page 2: {0}", page2);
var page2ReturnUrl = HttpUtility.ParseQueryString(page2.Query)["returnUrl"];
Console.WriteLine("Return to page 1 from page 2: {0}", page2ReturnUrl);
var page1ReturnUrl = HttpUtility.ParseQueryString(page1.Query)["returnUrl"];
Console.WriteLine("Return to page 0 from page 1 : {0}", page1ReturnUrl);
Run Code Online (Sandbox Code Playgroud)
Page 0: http://www.example.com/page0
Page 1: http://www.example.com/page1?paramA=foo¶mB=bar&returnUrl=http:%2f%2fwww.example.com%2fpage0
Page 2: http://www.example.com/page2?paramC=baz¶mD=qux&returnUrl=http:%2f%2fwww.example.com%2fpage1%3fparamA%3dfoo%26paramB%3dbar%26returnUrl%3dhttp:%252f%252fwww.example.com%252fpage0
Return to page 1 from page 2: http://www.example.com/page1?paramA=foo¶mB=bar&returnUrl=http:%2f%2fwww.example.com%2fpage0
Return to page 0 from page 1 : http://www.example.com/page0
Run Code Online (Sandbox Code Playgroud)
这可能会持续很多深度,但派生前一页 URL 的过程始终相同 - 只需对参数进行解码即可returnUrl。
| 归档时间: |
|
| 查看次数: |
1483 次 |
| 最近记录: |