[英]How to get route values for any url in asp.net core?
我需要在 ASP.NET MVC Core 中獲取任意 URL 的路由值。
可能是這樣的問題: 如何確定任意 URL 是否與定義的路線匹配,因為我還沒有找到任何直接的方法來做到這一點。
我也無法用這種方法做到這一點。
看起來一旦我有一個請求 url 的 HttpContext,就很容易獲得路由值,並查看 GitHub 中的aspnet/Hosting的源代碼,我到了創建 HttpContextFactory 的地步,但就是這樣, go 不能再進一步了!
有人知道該怎么做嗎?
提前致謝!
我知道這是一篇較舊的文章,但這是我從基於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
。
參考:Net6 您可以安裝 package 並使用using Microsoft.AspNetCore.Routing;
然后你可以得到這樣的路線值
var routeData = _httpContextAccessor.HttpContext.GetRouteData(); ;
var namedRouteValue = _httpContextAccessor.HttpContext.GetRouteValue("route-key");
請嘗試;
var t = ViewContext.RouteData.Values["id"];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.