2015-02-10 159 views
0

我已經爲不同的用途創建了UrlHelper擴展函數。現在,我創建將接受三個參數的功能等:從RouteValueDictionary對象創建一個字符串/查詢字符串對象

url.cutomAction(action, controller, new RouteValueDictionary{{key,value},{..},.. }); 

在擴展功能我將採取RouteValueDictionary和遍歷像這樣:

foreach (var data in RouteData) 
{ 
    data.Key, data.Value.ToString(); 
} 

但現在我需要知道,在遍歷這些鍵和值我怎麼能生成一個字符串或查詢字符串,如:

(key = value, key1 = value1, key2 = value2, ...) 

所以我可以創建一個最終的網址,並通過這個字符串在它喜歡:

return helper.Action(action, controller, new {above_Generated_string}) 

或者什麼是正確的做法。

+3

'Url.Action'需要'RouteValueDictionary'作爲它的一個參數,爲什麼你要創建一個新的擴展方法? – 2015-02-10 21:38:10

+0

是的,我知道。創建擴展方法的原因是創建自己選擇的字符串/查詢字符串。例如。使用擴展方法,我可以創建像key = value | key1 = value1等字符串。我知道使用管道作爲分隔符沒有任何意義,但我將它放在那裏僅作爲示例。 – Capri82 2015-02-10 21:42:01

+0

如果你要創建這樣一個字符串(這不是什麼大問題),你將如何將它傳遞給Url.Action?它沒有第三個字符串參數? – 2015-02-10 22:04:23

回答

1

有幾種方法可以做到這一點。其中之一是使用LINQ:

var result = RouteData.Select(s => string.Format("{0}={1}", s.Key, s.Value)) 
.Aggregate((current, next) => string.Format("{0}|{1}", current, next));