2009-01-31 75 views
4

我要生成,其中一个键/值对添加到URL动态我的页面上的链接,以便:将键/值添加到现有URL字符串的最佳方法是什么?

Default.aspx?key1=value1

变为:

Default.aspx?key1=value1&key2=value2

以便现有查询保留URL中的任何键。另外,如果没有钥匙,那么我的钥匙将会和'?'一起被添加,因为它是需要的。

我可以很容易地编写一些这样做的逻辑,但这似乎是框架应该有实用性的东西。有没有办法将键添加到查询字符串,而无需编写自己的逻辑呢?

回答

0

我一直在自己生成它们。

string url = Request.UrlReferrer.PathAndQuery; 

(url[url.Length - 1] != '?' ? "?" : "&") + Url.Encode(key) + "=" + Url.Encode(key) 
  • Url.Encode东西在ASP.NET MVC
+0

只是FYI,你的代码只有在字符串ENDS在'?'字符。我在我的问题中给出的例子不适用于该代码。它会添加另一个'?'字符添加到URL。 – 2009-01-31 19:09:38

+0

我做了更新。试试看。 – ajma 2009-01-31 19:32:08

3

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

+0

做一些像'builder.Query + =“hello = world”'的东西时要小心,UriBuilder似乎给你额外的?分隔符每次使用+ =。 – 2009-04-02 22:19:46

相关问题