簡體   English   中英

如何獲取 asp.net 內核中任何 url 的路由值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM