我要生成,其中一個鍵/值對添加到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