我正在开发一个API,它有两个控制器:PicturesController
和AccountController
。 PicturesController
上有一种返回图像的方法,我想知道如何获取其URL。
在另一个PicturesController
方法上,我使用下面的代码获取了网址:
var url = Url.RouteUrl("GetPicture", new { id = picture.Id }, Request.Scheme);
但是我需要从另一个控制器(AccountController
)获取相同方法的URL。
我尝试了以下代码,但结果为空。
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");
}
...
}
答案 0 :(得分:1)
问题是您在此代码中使用GetPicture
:
var url = Url.Action("GetPicture", "PicturesController", new { id = picture.Id }, Request.Scheme);
Url.Action
的第一个参数是 action 的名称,在您的情况下为Get
,因此应为
var url = Url.Action("Get", "PicturesController", new { id = picture.Id }, Request.Scheme);