我开发一个API,它有两个控制器:PicturesController
和AccountController
。有返回的图像和我想知道如何得到它的网址上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");
}
...
}
问题是,你在这个代码中使用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);