2011-11-04 190 views
2

我正在使這個奇怪的web服務獲取其參數作爲URL中的查詢參數。問題是,單個參數可能有多個值。類似:如何解析帶有多個參數值的URL字符串?

http://mydomain/Service?operation=ActivateUser&id=1&id=2&id=3 

在這種情況下,我需要啓動3個用戶ID的1,2和3。更糟糕的是,它可能是這樣的(我認爲,該規範是一個比較含糊,以後會澄清) :

http://mydomain/Service?operation=ActivateUser&id=1&operation=DeleteUser&id=2 

在這種情況下,我需要激活用戶1和刪除用戶2

所以我真的需要一個URL解析器它保留了參數的順序。 .NET的默認Request.QueryString沒有這樣做,它只是用逗號分隔這些值,並按順序分配給地獄。

由於缺少原始URL並將其拆分爲?,&和=我自己,有沒有更好的方法?

+0

你能不能改變分隔符?例如。 OP = ActivateUser&IDS = 1 | 2 | 3? – jglouie

+0

不,不幸的是,這種表現形式強加給我。 –

回答

3

這聽起來像Request.QueryString.GetValues(這是NameValueCollection.GetValues)是你所追求的。它會返回它找到一個給定的密鑰和它們在URL中的順序值的字符串數組..

鑑於http://www.site.com/page.aspx?keyid=1&keyid=2&keyid=3

string[] keys = Request.QueryString.GetValues("keyid"); 

keys[0] would be "1" 
keys[1] would be "2" 
keys[2] would be "3" 
+0

不錯!現在唯一的問題可能在我的第二個例子中。如果這是一個真正的問題,下週將會看到。 –

+0

@ Vilx-應該還可以。你必須單獨檢查操作查詢字符串,然後我假設你將對數組中的第二項操作。 –

+0

但是,如果「操作」有2個值,「id」有4個值,我怎麼知道哪個id去哪個操作? –

相關問題