2009-01-31 74 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

相關問題