【问题标题】:Create a String/Query String from RouteValueDictionary Object从 RouteValueDictionary 对象创建字符串/查询字符串
【发布时间】:2015-02-10 21:31:49
【问题描述】:

我为不同的用途创建了UrlHelper 扩展函数。现在我正在创建一个函数,它将接受三个参数,例如:

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, ...)

所以我可以创建一个最终 URL 并在其中传递这个字符串,例如:

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

或者任何正确的方法。

【问题讨论】:

  • Url.ActionRouteValueDictionary 作为它的参数之一,为什么要创建一个新的扩展方法?
  • 是的,我知道。创建扩展方法的原因是创建自己选择的字符串/查询字符串。例如。使用扩展方法,我可以创建 key=value|key1=value1 等字符串。我知道使用管道作为分隔符没有意义,但我将它放在那里只是为了举例。
  • 如果您要创建这样一个字符串(这没什么大不了的),您将如何将它传递给Url.Action?它没有第三个字符串参数?
  • 我会处理“那个”第三个参数。我想知道的是如何在循环时创建字符串。正如我提到的,我在 C# 中一点也不擅长,所以我不知道如何继续它。我应该创建一些字符串列表还是应该使用字符串类函数或字符串生成器等......

标签: c# urlhelper


【解决方案1】:

有几种方法可以做到这一点。其中之一是使用 LINQ:

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

【讨论】:

    猜你喜欢
    • 2012-10-23
    • 2015-09-08
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 2015-08-19
    相关资源
    最近更新 更多