ReturnUrl带多个参数,返回时只返回一个参数的解决方法

ReturnUrl带多个参数,返回时只返回一个参数的解决方法

一、场景描述如下

1、用户进入b.aspx页面,点击提交按钮,如果该用户没有登录,则跳转到登录页面login.aspx,在登录页面登录成功后,再返回到b.aspx页面。

2、常见做法为:在跳转到登录页面时,将b.aspx页面作为ReturnUrl的值带过去,如果b.aspx页面后面带有三个参数:b.aspx?a=1&b=2&c=3,则跳转URL写法为:login.aspx?ReturnUrl=b.aspx?a=1&b=2&c=3。

4、登录成功后,我们希望看到的返回页面是:b.aspx?a=1&b=2&c=3,但是,实际上返回的页面是:b.aspx?a=1,只返回一个参数,后面的b=2&c=3,则返回不了。

二、解决方式

使用Server.UrlEncode("")进行编码

例如:

  •  
  • 
    string subURL = Server.UrlEncode("b.aspx?a=1&b=2&c=3");
    Response.Redirect("/login.aspx?ReturnUrl=" + subURL,true); 
    
    		
  • 标签: