我正在使用asp.net mvc
我有一个有一些参数的网址,其中一个是网址 例如 www.example.com?p1=v1&p2=v2&p3=url&p4=v4 ...
我要添加的网址有几个参数。我该如何将它们添加到此网址?因为第一个网址带第二个参数
e.g www.example.com?p1=v1&p2=v2&p3=www.example2.com?p21=v21&p22=v22&p23=v23&p4=v4 ...
p21,p22,p23属于第二个网址(www.example2.com),但第一个网址(www.example.com)采用p22,p23有自己的
P.S 我无法控制第一个网址流程
谢谢大家的帮助
答案 0 :(得分:2)
在将查询字符串参数的值发送到url:
之前,您应该url encode
http://www.example.com?p1=v1&p2=v2&p3=www.example2.com%3Fp21%3Dv21%26p22%3Dv22%26p23%3Dv23%26p4%3Dv4..
因此,在此示例中,p3
参数的值已正确编码以通过HTTP协议进行传输,并且可以在接收站点明确解码回其原始值www.example2.com?p21=v21&p22=v22&p23=v23&p4=v4
。
.NET中有内置方法来实现这一目标。例如EscapeDataString
方法:
string urlEncoded = Uri.EscapeDataString("www.example2.com?p21=v21&p22=v22&p23=v23&p4=v4");
// Will produce: www.example2.com%3Fp21%3Dv21%26p22%3Dv22%26p23%3Dv23%26p4%3Dv4
当然,如果您在ASP.NET MVC中使用内置帮助程序,则此URL编码将自动发生。
另一方面,如果您无法控制此网址的构建,那么您肯定最终会得到一个模糊且错误的网址(如您的问题中显示的那个),无法通过有效系统理解。这就是为什么要施加某些标准的原因。