传递paramter,这是一个带参数的url

时间:2016-06-19 11:51:12

标签: html asp.net-mvc url get

我正在使用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 我无法控制第一个网址流程

谢谢大家的帮助

1 个答案:

答案 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编码将自动发生。

另一方面,如果您无法控制此网址的构建,那么您肯定最终会得到一个模糊且错误的网址(如您的问题中显示的那个),无法通过有效系统理解。这就是为什么要施加某些标准的原因。