如何将相对路径转换为相对URL?

时间:2016-03-01 17:48:44

标签: asp.net-core asp.net-core-mvc

我有一个JSON API动作过滤器拦截输出插入超媒体URL。

我正在注射Microsoft.AspNet.Mvc.ApiExplorer.IApiDescriptionGroupCollectionProvider,让我可以访问所有路线。

对于已知操作,我有Microsoft.AspNet.Mvc.ApiExplorer.ApiDescription.RelativePath的路径相对路径。例如:

/articles/{id}

我也有路线的参数,在这种情况下它只是{id}

我需要将相对路线转换为真实的Url。例如,对于id的2,我希望:

/articles/2

ASP.NET 5 / Core / MVC 6中是否有功能可以让我获取参数和路由模板并创建一个真正的Url?

修改

感谢您的评论,这是一些测试的结果。 @dealdiane是正确的Hyprlinkr与DNX / aspnet核心不兼容。我调查了TypedRouting,但帮助者不使用路径模板。

我尝试Microsoft.AspNetCore.Mvc.Routing.UrlHelper来创建链接。您可以像任何其他服务一样注入IUrlHelper并使用扩展方法,例如:

UrlHelper helper; // Constructor injected
ApiDescription action; // I have this as a starting point

var actionDescriptor = (ControllerActionDescriptor)action.ActionDescriptor;
var actionName = actionDescriptor.Name;
var controllerName = actionDescriptor.ControllerName;
object values = new {id};

var url = helper.Action(actionName, controllerName, values);

不幸的是,url设置为:

/articles?id=2

哪个不正确。

0 个答案:

没有答案