C # MVC HttpGet добавить параметры в маршрут - PullRequest
0 голосов
/ 24 октября 2019

В моем контроллере у меня есть такое действие:

    [Route("api/[controller]")]
    [ApiController]
    public class ManageOPIdentifierController : ControllerBase
    {
        [HttpGet("[action]")]
        public OPIdentifiersVM Get(int pageSize, int pageNumber)
        {

Как добавить параметры pageSize и pageNumber в HttpGet? Потому что теперь, когда у меня есть второй метод Get без параметров, я получаю ошибку, потому что есть два маршрута с одинаковым определением. Как должен выглядеть первый маршрут HttpGet?

[HttpGet("[action]/{pageSize}&{pageNumber}")]

Код выше не работает

Редактировать: Мой вопрос был неправильно понят. У меня есть два метода Get:

[HttpGet("[action]")]
public OPIdentifiersVM Get(int pageSize, int pageNumber)

и

[HttpGet("[action]")]
public List<OPIdentifierVM> Get()

Нет проблем для чтения значений из параметров pageSize и pageNumber. Проблема в том, что у меня есть два метода с одним и тем же Http («[действие]»). И я получаю сообщение об ошибке:

AmbiguousMatchException: The request matched multiple endpoints. Matches: 
ManageUuidWeb.Controllers.ManageOPIdentifierController.Get (OneProjectIdentifier.Web)
ManageUuidWeb.Controllers.ManageOPIdentifierController.Get (OneProjectIdentifier.Web)

Если я хорошо понял комментарий, я должен изменить имя одного из методов. Но я хочу знать, возможно ли иметь два метода с одинаковым именем, но с разными параметрами?

1 Ответ

0 голосов
/ 24 октября 2019
[HttpGet("[action]")]
public OPIdentifiersVM Get([FromUri] int pageSize, [FromUri] int pageNumber)

(или [FromRoute], если вы используете ядро ​​asp.net), тогда к нему будет обращаться

http://localhost/api/ManageOPIdentifier/Get/10/1

или использовать параметры запроса для этого (это будет лучшим решением)

[HttpGet("[action]")]
public OPIdentifiersVM Get([FromQuery] int pageSize, [FromQuery] int pageNumber)

затем

http://localhost/api/ManageOPIdentifier/Get?pageSize=10&pageNumber=1

также вы можете использовать простой [HttpGet], когда имя вашего действия равно имени метода глагола http

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...