c# Как читать значения из строки запроса с помощью ASP.NET Core?




2 Answers

Вы можете использовать [FromQuery] для привязки определенной модели к querystring:

https://docs.microsoft.com/en-us/aspnet/core/mvc/models/model-binding

например

string page = HttpContext.Request.Query["page"].ToString();
c# http asp.net-core query-string .net-core

Я создаю один RESTful API с помощью ASP.NET Core MVC, и я хочу использовать параметры запроса для указания фильтрации и подкачки на ресурсе, который возвращает коллекцию.

В этом случае мне нужно прочитать значения, переданные в строке запроса, для фильтрации и выбора результатов для возврата.

Я уже выяснил, что внутри контроллера Get action HttpContext.Request.Query возвращает один IQueryCollection .

Проблема в том, что я не знаю, как она используется для извлечения значений. По правде говоря, я думал, что это можно сделать, например, используя

string page = HttpContext.Request.Query["page"]

Проблема в том, что HttpContext.Request.Query["page"] не возвращает строку, а StringValues .

В любом случае, как использовать IQueryCollection для фактического чтения значений IQueryCollection ?




Ядро ASP.NET автоматически свяжет form values route values и query strings по имени. Это означает, что вы можете просто сделать это:

[HttpGet()]
public IActionResult Get(int page)
{ ... }

MVC попытается связать данные запроса с параметрами действия по имени ... ниже приведен список источников данных в том порядке, в котором просматривается привязка модели

  1. Form values : это значения формы, которые входят в HTTP-запрос с использованием метода POST. (включая запросы POST JQuery).

  2. Route values : набор значений маршрута, предоставляемых маршрутизацией

  3. Query strings запроса: часть строки запроса в URI.

Источник: как работает привязка модели

FYI, вы также можете комбинировать автоматические и явные подходы:

[HttpGet()]
public IActionResult Get(int page
     , [FromQuery(Name = "page-size")] int pageSize)
{ ... }



Related