在C#中将查询字符串转换为字典的最佳方法

80

我正在寻找将HTTP GET请求的查询字符串转换为字典形式,以及将其转回查询字符串的最简单方法。

我认为一旦查询转换成字典形式,就可以更容易地进行各种操作,但我似乎需要很多代码才能完成转换。有没有推荐的方式?

14个回答

1

尝试使用而不是将HttpContext.Request.QueryString转换为Dictionary<>

HttpContext.Request.Query

这已经是一个 Dictionary<string, StringValues>


1
我在寻找Azure WebJob的解决方案时偶然发现了这篇文章,希望对其他人有所帮助。
如果您正在编写Azure WebJob,则可以使用GetQueryParameterDictionary()扩展方法。请注意,保留HTML标记。
var queryParameterDictionary = request.GetQueryParameterDictionary();

其中request是类型为HttpRequest的,而queryParameterDictionary现在是类型为IDictionary<string, string>的。


1
你可以通过使用FromQueryAttribute来修饰参数来获取它。
public void Action([FromQuery] Dictionary<string, string> queries)
{
    ...
}

附注:如果您想为每个键获取多个值,可以将字典更改为Dictionary<string,List<string>>


0

AspNet Core现在自动包含HttpRequest.Query,可以像使用字典的键访问器一样使用。

但是,如果您需要将其转换为日志记录或其他用途,可以将该逻辑提取到扩展方法中,如下所示:

public static class HttpRequestExtensions
{
  public static Dictionary<string, string> ToDictionary(this IQueryCollection query)
  {
    return query.Keys.ToDictionary(k => k, v => (string)query[v]);
  }
}

然后,您可以在httpRequest中像这样使用它:

var params = httpRequest.Query.ToDictionary()

进一步阅读


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接