我有一个网址:如何获得查询字符串与多个PARAM
http://www.abc.com?refurl=/english/info/test.aspx?form=1&h=test&s=AB
如果我使用
Request.QueryString["refurl"
,但给我
/english/info/test.aspx?form=1
,而不是我需要的完整URL
/english/info/test.aspx?form=1&h=test&s=AB
我有一个网址:如何获得查询字符串与多个PARAM
http://www.abc.com?refurl=/english/info/test.aspx?form=1&h=test&s=AB
如果我使用
Request.QueryString["refurl"
,但给我
/english/info/test.aspx?form=1
,而不是我需要的完整URL
/english/info/test.aspx?form=1&h=test&s=AB
对于你不应该使用查询字符串,特定情况下(因为您的查询字符串包含三个参数)改用Uri
类,并Uri.Query
会给你所需的结果。
Uri uri = new Uri(@"http://www.abc.com?refurl=/english/info/test.aspx?form=1&h=test&s=AB");
string query = uri.Query;
,这将给你:
?refurl=/english/info/test.aspx?form=1&h=test&s=AB
稍后,您可以删除?refurl=
以获得所需的输出。
我敢肯定没有直接的方式为您的特定需求的框架,你必须实现在你的代码,并且也与字符串操作。
如果你发送更多参数(不仅仅是返回) – 2013-02-11 07:40:25
@EvaldasDzimanavicius,它不会工作,当然它不会,但那不是问题。似乎OP对[查询](http://msdn.microsoft.com/zh-cn/library/system.uri.query.aspx)Uri – Habib 2013-02-11 07:42:00
则应更换&
与&
。
我有类似的情况,前一段时间。 我通过编码refurl价值解决它。 现在我的URL看起来类似于一个: http://www.abc.com?refurl=adsf45a4sdf8sf18as4f6as4fd
我已经创建了2种方法:
public string encode(string);
public string decode(string);
重定向之前,或者你有你的链接,你简单的编码的链接,你在哪里读书呢,使用前解码:
Response.redirect(String.Format("http://www.abc.com?refurl={0}", encode(/english/info/test.aspx?form=1&h=test&s=AB));
,并在页面所使用refurl:
$refUrl = Request.QueryString["refurl"];
$refUrl = decode($refUrl);
编辑: 编码/解码方法,其实,我为扩展方法,那么对于每一个字符串我可以简单地使用string.encode()
或string.decode()
。
属性感兴趣,你的回答也是正确的。我正在尝试使用没有编码。 – 2013-02-11 08:06:16
修复问题,而问题是,你把一个完整的URL与出它的编码参数refurl
。
那么,您创建一个URL字符串使用UrlEncode()
功能,如:
"http://www.abc.com?refurl=" + Server.UrlEncode(ReturnUrlParam)
其中
ReturnUrlParam="/english/info/test.aspx?form=1&h=test&s=AB";
但首先,你的查询字符串包含两个''是不是在?正确的格式 - 而且因为你做到了这一点,所以最好解决这个问题。当你添加一个完整的url字符串时,你可以使用UrlEncode函数修复它 – Aristos 2013-02-11 07:43:49