首页 > 解决方案 > 从另一个控制器创建指向控制器的 url 链接

问题描述

我在 ASP.NET Core 2.0 中开发了一个 WebApi RESTful。从控制器 AI 中的操作方法创建位于不同控制器 B 中的操作方法的 URL 地址:

[Route("api/applications/{idbcon}/bcontrollers")]
public class BController : Controller{
    [HttpGet({idbcon}), Name = "ActionB"]
    public IActionResult ActionB(int idbcon, [FromHeader(Name = "Accept")] string mediatype){
        return OK();
    }
}

[Route("api/applications/{idapp}/bcontrollers/{idbcon}/acontrollers")]
public class AController: Controller{
    [HttpGet(), Name = "GetURLBController"]
    public IActionResult GetURLBController()
    {
        var url = /* Here I would like to get the link to "ActionB" that belong to a Controller "BController" */;
        return Ok(url);
    }
}

有什么建议吗???

标签: c#asp.net-core

解决方案


使用接受和参数的IUrlHelper.Action重载:actioncontroller

public class AController : Controller
{
    [HttpGet]
    public IActionResult GetURLBController()
    {
        var url = Url.Action("ActionB", "BController");
        return Ok(url);
    }
}

IUrlHelper是您从Controller基类继承的东西,作为Url属性公开。


推荐阅读