我需要获取ASP.NET MVC Core中任意URL的路由值。
可能是这样的问题:How to determine if an arbitrary URL matches a defined route,因为我没有找到任何直接的方法来做这件事。
我也无法用这种方法做到这一点。
看起来,一旦我有一个带有URL请求的HttpContext,很容易获得路由值,并且在GitHub中查看aspnet/Hosting的源代码,我已经到了创建HttpContextFactory的地步,但就是这样,就再也没有了!
有人知道怎么做吗?
提前致谢!
答案 0 :(得分:0)
我知道这是一篇较旧的文章,但这是我从基于URL的ASP.NET MVC Core应用程序中运行的RouteCollection中获取RouteData的工作。
public async Task<ActionResult> GetRouteDataForUrl([FromQuery(Name = "url")] string url)
{
var uri = new Uri(url);
var httpContext = new DefaultHttpContext();
httpContext.Request.Path = uri.PathAndQuery;
var routeContext = new RouteContext(httpContext);
var router = RouteData.Routers.First(); //get the top level router
await router.RouteAsync(routeContext); //router updates routeContext
return new JsonResult(routeContext.RouteData.Values);
}
routeContext.RouteData
由根级路由器填充。
答案 1 :(得分:-1)
请试试;
var t = ViewContext.RouteData.Values["id"];