[英]Dotnet Core API - Get the URL of a controller method
我正在开发一个 API,它有两个控制器: PicturesController
和AccountController
。 PicturesController
上有一个返回图像的方法,我想知道如何获取它的 URL。
在另一个PicturesController
方法中,我使用以下代码获取了 URL:
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");
}
...
}
问题是您在此代码中使用了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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.