我正在寻找将HTTP GET请求的查询字符串转换为字典形式,以及将其转回查询字符串的最简单方法。
我认为一旦查询转换成字典形式,就可以更容易地进行各种操作,但我似乎需要很多代码才能完成转换。有没有推荐的方式?
我正在寻找将HTTP GET请求的查询字符串转换为字典形式,以及将其转回查询字符串的最简单方法。
我认为一旦查询转换成字典形式,就可以更容易地进行各种操作,但我似乎需要很多代码才能完成转换。有没有推荐的方式?
尝试使用而不是将HttpContext.Request.QueryString转换为Dictionary<>
HttpContext.Request.Query
这已经是一个 Dictionary<string, StringValues>
。
GetQueryParameterDictionary()
扩展方法。请注意,保留HTML标记。var queryParameterDictionary = request.GetQueryParameterDictionary();
其中request是类型为HttpRequest
的,而queryParameterDictionary现在是类型为IDictionary<string, string>
的。
FromQueryAttribute
来修饰参数来获取它。public void Action([FromQuery] Dictionary<string, string> queries)
{
...
}
附注:如果您想为每个键获取多个值,可以将字典更改为Dictionary<string,List<string>>
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()
进一步阅读