在ASP.NET MVC6中访问查询字符串

Web*_*Dev 18 asp.net-mvc asp.net-core-mvc

我试图访问我的ASP.NET MVC6应用程序中的查询字符串参数.但它似乎不同于MVC5和Web表单,QueryString没有任何索引器,我不能说:

string s = Request.QueryString["key1"] //gives error
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是 - 如何在MVC6中访问查询字符串参数?

令人惊讶的是,Request.Forms收集按预期工作(如MVC5或Web表单).

谢谢.

Yis*_*zer 29

支持使用索引器进行查询.

请参阅此处的MVC代码测试 - https://github.com/aspnet/Mvc/blob/e0b8532735997c439e11fff68dd342d5af59f05f/test/WebSites/ControllersFromServicesClassLibrary/QueryValueService.cs

context.Request.Query["value"];
Run Code Online (Sandbox Code Playgroud)

另请注意,在MVC 6中,您可以使用[FromQuery]属性直接从查询建模绑定.

public IActionResult ActionMethod([FromQuery]string key1)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)


ram*_*ilu 17

所以,我的问题是 - 如何在MVC6中访问查询字符串参数?

您可以使用Request.QueryASPNET 5中的新增功能.

 var queryStrings = Request.Query;
Run Code Online (Sandbox Code Playgroud)

我要尝试的网址是 - http://localhost:12048/Home/Index?p=123&q=456 你可以使用 - 获取所有密钥 -

queryStrings.Keys
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

然后你可以通过迭代键获得值 -

 var qsList = new List<string>();
 foreach(var key in queryStrings.Keys)
 {
      qsList.Add(queryStrings[key]);
 }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述