Asp.net mvc 4 如何在MVC4';什么要求?

Asp.net mvc 4 如何在MVC4';什么要求?,asp.net-mvc-4,asp.net-web-api,httprequest,Asp.net Mvc 4,Asp.net Web Api,Httprequest,我在这里工作的第一个MVC4项目中使用了各种各样的Web Api,这让我欣喜若狂 在MVC 3中,我可以获得如下查询字符串参数: var unicornName = Request.Query["unicornName"]; 但在MVC4中,请求似乎从HttpRequestBase转到了HttpRequestMessage,并且查询参数不再存在。那么,嗯,好吧,我现在怎么得到它们呢。我在网上找到了几个例子,但它们都很荒谬 通过“&”拆分RequestUri的查询字符串,并查找参数和对。显示了对

我在这里工作的第一个MVC4项目中使用了各种各样的Web Api,这让我欣喜若狂

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

var unicornName = Request.Query["unicornName"];
但在MVC4中,请求似乎从
HttpRequestBase
转到了
HttpRequestMessage
,并且查询参数不再存在。那么,嗯,好吧,我现在怎么得到它们呢。我在网上找到了几个例子,但它们都很荒谬

通过“&”拆分RequestUri的查询字符串,并查找参数和对。显示了对新请求对象调用
GetQueryNameValuePairs
方法,该方法返回键值对列表,然后执行linq以查找键和值。得到这么简单的东西真的不可能这么落后。请告诉我我遗漏了什么


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

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

var requestQuery = 
    list.ToDictionary((keyItem) => keyItem.Key, (valueItem) => valueItem.Value);
然后,您可以像往常一样获取字符串参数:

var unicornName = requestQuery["unicornName"];

我想这可能就是你要找的

  var queryValues = Request.RequestUri.ParseQueryString();

使用键/值对列表有什么问题?听起来很合理。哇。。我想我没有错过任何东西。我想这是一个回归的问题。你更愿意使用什么,request[“blah”]还是request.GetQueryNameValuePairs().ToDictionary(e=>e.Key,e=>e.Value)[“blah”]?这似乎是request.QueryString[“QueryString name”]又回到了MVC 5中,我自己刚刚尝试过,一切都很顺利。