将键/值添加到现有URL字符串的最佳方法?

时间:2009-01-31 17:58:15

标签: c# .net asp.net

我想在我的页面上生成一个链接,其中一个键/值对动态添加到URL中,以便:

  

Default.aspx?key1=value1

变为:

  

Default.aspx?key1=value1&key2=value2

以便现有查询保留URL中的任何键。此外,如果没有密钥,那么我的密钥将与“?”一起添加,因为它是必需的。

我可以轻松地编写一些执行此操作的逻辑,但这似乎是框架应具有的实用性。有没有办法在不编写自己的逻辑的情况下为查询字符串添加键?

4 个答案:

答案 0 :(得分:5)

我知道,在.NET Framework中不能正确支持这一点很奇怪。有几个extensions to UriBuilder会做你需要的。

答案 1 :(得分:3)

您可以使用UriBuilder类。请参阅Query property文档中的示例。 FWIW,ASP.NET MVC包含UrlHelper类,它为MVC框架完成了这类工作。您可能想要考虑向HttpRequest类添加扩展方法,该方法接受字典并根据给定的请求和字典值返回合适的Url。这样你只需要写一次。

答案 2 :(得分:0)

我一直在自己创造它们。

string url = Request.UrlReferrer.PathAndQuery;

(url[url.Length - 1] != '?' ? "?" : "&") + Url.Encode(key) + "=" + Url.Encode(key)
  • Url.Encode是ASP.NET MVC中的内容

答案 3 :(得分:0)

如果您正在使用ASP.NET MVC Framework版本,我相信有一个TabBuilder对象可以让您这样做。否则你可以使用UriBuilder,但你仍然需要自己进行一些解析。网上还有一些实用工具类,但我从未使用它们,所以我不知道它们的工作情况如何: