2015-02-10 174 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));