我正在使用ASP构建一个RESTful API。NET Core MVC和我想使用查询字符串参数来指定对返回集合的资源进行过滤和分页。
在这种情况下,我需要读取在查询字符串中传递的值以过滤并选择要返回的结果。
我已经发现在控制器内部的Get动作访问HttpContext.Request.Query返回一个IQueryCollection。
问题是我不知道如何使用它来检索值。事实上,我认为这样做的方法是使用,例如
string page = HttpContext.Request.Query["page"]
问题是HttpContext.Request。查询["page"]不返回字符串,而是返回StringValues。
无论如何,如何使用IQueryCollection来实际读取查询字符串值?
ASP。NET Core将根据名称自动绑定表单值、路由值和查询字符串。这意味着你可以简单地这样做:
[HttpGet()]
public IActionResult Get(int page)
{ ... }
MVC将尝试通过名称将请求数据绑定到动作参数…下面是数据源的列表,按模型绑定查看它们的顺序排列
表单值:这些是使用POST方法放入HTTP请求中的表单值。(包括jQuery POST请求)。
路由值:路由提供的路由值的集合
查询字符串:URI的查询字符串部分。
来源:ASP中的模型绑定。网络核心
供你参考,你也可以结合自动和显式方法:
[HttpGet()]
public IActionResult Get(int page
, [FromQuery(Name = "page-size")] int pageSize)
{ ... }