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);