DOTNET核心API - 获取控制器方法的网址

问题描述 投票:2回答:1

我开发一个API,它有两个控制器:PicturesControllerAccountController。有返回的图像和我想知道如何得到它的网址上PicturesController的方法。

在另一PicturesController方法,我使用的代码波纹管的网址:

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");
    }
  ...
}
c# asp.net-web-api .net-core
1个回答
1
投票

问题是,你在这个代码中使用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);
© www.soinside.com 2019 - 2024. All rights reserved.