10

我在这里为我的第一个使用 Web Api 品种的 MVC 4 项目工作而大笑。

在 MVC 3 中,我可以获得如下查询字符串参数:

var unicornName = Request.Query["unicornName"];

但在 MVC 4 中,看起来 Request 从 aHttpRequestBase变为 aHttpRequestMessage并且 Query 参数不再存在。所以,嗯,好吧,我现在如何得到它们。我在网上找到了几个例子,但它们很荒谬。

这个家伙建议用“&”分割 RequestUri 的查询字符串并找到你的参数和配对。这个例子展示了在新的请求对象上调用一个GetQueryNameValuePairs方法,它返回一个键值对列表,然后做一些 linq 来找到你的键和值。要得到如此简单的东西,真的不可能如此倒退。请告诉我我错过了什么!

注意:我可以理解它正在采用模型绑定的方式,我应该通过操作的方法参数引入查询字符串参数,但是仍然有一些时候需要从请求中提取查询字符串变量(很容易?),例如在过滤器中。

4

2 回答 2

25

我想这可能是你正在寻找的,

  var queryValues = Request.RequestUri.ParseQueryString();

https://stackoverflow.com/a/11729619/6819

于 2012-10-18T02:15:47.637 回答
5

如果 linq 真的那么麻烦,只需将你的结果包装GetQueryNameValuePairs()在字典中:

var requestQuery = 
    list.ToDictionary((keyItem) => keyItem.Key, (valueItem) => valueItem.Value);

然后,您可以像往常一样获取字符串参数:

var unicornName = requestQuery["unicornName"];
于 2012-10-17T22:38:55.333 回答