RouteCreationException: Следующие ошибки произошли с информацией маршрутизации атрибута - PullRequest
0 голосов
/ 16 октября 2018

Здравствуйте, я получаю эту ошибку при запуске API: «Ошибка: маршрут атрибута« api / Book / {page} / {itemsPerPage} »не может содержать параметр с именем« {page} ». Использовать« [page] »вшаблон маршрута для вставки значения ''. "

  [HttpGet("{page}/{itemsPerPage}", Name = "GetBookWithPagination")]
    [ProducesResponseType(404)]
    [ProducesResponseType(400)]
    [ProducesResponseType(200, Type = typeof(PaginationResult<Book>))]
    public async Task<ActionResult<PaginationResult<Book>>> Get(int page, int itemsPerPage, string filter)
    {
        try
        {
            var result = new PaginationResult<Book>();
            result = bookRepo.RetrieveBookWithPagination(page, itemsPerPage, filter);
            return result;
        }
        catch (Exception)
        {
            return BadRequest();
        }
    }

API работает при удалении этого блока кода

1 Ответ

0 голосов
/ 20 ноября 2018

При использовании ASP.NET Core MVC Razor Pages {страница} становится тем, что фактически является зарезервированным словом, так же, как {controller} и {action} при работе с традиционными контроллерами MVC и действиями.Чтобы обойти это, вы можете просто использовать что-то еще, чтобы представить номер страницы, желаемой при выполнении нумерации страниц.

Например:

 [HttpGet("{pageIndex}/{itemsPerPage}", Name = "GetBookWithPagination")]
    [ProducesResponseType(404)]
    [ProducesResponseType(400)]
    [ProducesResponseType(200, Type = typeof(PaginationResult<Book>))]
    public async Task<ActionResult<PaginationResult<Book>>> Get(int page, int itemsPerPage, string filter)
    {
        try
        {
            var result = new PaginationResult<Book>();
            result = bookRepo.RetrieveBookWithPagination(page, itemsPerPage, filter);
            return result;
        }
        catch (Exception)
        {
            return BadRequest();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...