Dotnet Core API - получить URL-адрес метода контроллера - PullRequest
0 голосов
/ 03 февраля 2019

Я разрабатываю API, и у него есть два контроллера: PicturesController и AccountControllerPicturesController есть метод, который возвращает изображение, и я хотел бы знать, как получить его URL.

В другом методе PicturesController я получил URL, используя код ниже:

var url = Url.RouteUrl("GetPicture", new { id = picture.Id }, Request.Scheme);

Но мне нужно получить URL-адрес того же метода, однако из другого контроллера (AccountController).

Я попробовал следующий код, но это приводит к нулю.

var url = Url.Action("GetPicture", "PicturesController", new { id = picture.Id }, Request.Scheme);

Это метод:

public class PicturesController : Controller
{
  ...

   // GET api/pictures/id
    [HttpGet("{id}", Name = "GetPicture")]
    public async Task<ActionResult> Get(Guid id)
    {
        var picture = await _context.Pictures.FirstOrDefaultAsync(p => p.IsActive() && p.Id == id);

        if (picture == null)
            return NotFound();

        return File(picture.PictureImage, "image/jpg");
    }
  ...
}

1 Ответ

0 голосов
/ 04 февраля 2019

Проблема в том, что вы используете GetPicture в этом коде:

var url = Url.Action("GetPicture", "PicturesController", new { id = picture.Id }, Request.Scheme);

Первый параметр для Url.Action - это имя действия , который в вашем случае Get, поэтому он должен быть

var url = Url.Action("Get", "PicturesController", new { id = picture.Id }, Request.Scheme);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...