我要生成,其中一个键/值对添加到URL动态我的页面上的链接,以便:将键/值添加到现有URL字符串的最佳方法是什么?
Default.aspx?key1=value1
变为:
Default.aspx?key1=value1&key2=value2
以便现有查询保留URL中的任何键。另外,如果没有钥匙,那么我的钥匙将会和'?
'一起被添加,因为它是需要的。
我可以很容易地编写一些这样做的逻辑,但这似乎是框架应该有实用性的东西。有没有办法将键添加到查询字符串,而无需编写自己的逻辑呢?
我要生成,其中一个键/值对添加到URL动态我的页面上的链接,以便:将键/值添加到现有URL字符串的最佳方法是什么?
Default.aspx?key1=value1
变为:
Default.aspx?key1=value1&key2=value2
以便现有查询保留URL中的任何键。另外,如果没有钥匙,那么我的钥匙将会和'?
'一起被添加,因为它是需要的。
我可以很容易地编写一些这样做的逻辑,但这似乎是框架应该有实用性的东西。有没有办法将键添加到查询字符串,而无需编写自己的逻辑呢?
我知道,这是该怪在.NET Framework中不被正确支持。一对extensions to UriBuilder将尽你所需。
我一直在自己生成它们。
string url = Request.UrlReferrer.PathAndQuery;
(url[url.Length - 1] != '?' ? "?" : "&") + Url.Encode(key) + "=" + Url.Encode(key)
您可以使用UriBuilder类。请参阅Query property文档中的示例。 FWIW,ASP.NET MVC包含了UrlHelper类,它为MVC框架完成了这类事情。您可能想考虑将扩展方法添加到接受字典的HttpRequest类,并根据给定的请求和字典值返回合适的Url。这样你只需要写一次。
做一些像'builder.Query + =“hello = world”'的东西时要小心,UriBuilder似乎给你额外的?分隔符每次使用+ =。 – 2009-04-02 22:19:46
如果您使用ASP.NET MVC Framework版本,我相信有一个TabBuilder对象可以让您这样做。否则,你可以使用UriBuilder,但你仍然需要自己做一些解析。还有一些实用类网上为好,但我从来没有使用过,所以我不知道他们是如何工作:
只是FYI,你的代码只有在字符串ENDS在'?'字符。我在我的问题中给出的例子不适用于该代码。它会添加另一个'?'字符添加到URL。 – 2009-01-31 19:09:38
我做了更新。试试看。 – ajma 2009-01-31 19:32:08