繁体   English   中英

Dotnet Core API - 获取控制器方法的 URL

[英]Dotnet Core API - Get the URL of a controller method

我正在开发一个 API,它有两个控制器: PicturesControllerAccountController 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM