【问题标题】:How can you access RouteData from the code-behind?如何从代码隐藏中访问 RouteData?
【发布时间】:2025-12-22 13:40:11
【问题描述】:

在使用 ASP.Net 路由时,如何从代码隐藏中获取 RouteData?

我知道你可以从 RouteHandler 的 GetHttpHander 方法中得到它(你得到了 RequestContext),但是你能从代码隐藏中得到它吗?

有没有...

RequestContext.Current.RouteData.Values["whatever"];

...您可以像使用 HttpContext 一样进行全局访问?

还是说 RouteData 只能从 RouteHandler 内部访问?

【问题讨论】:

  • 要像 Url.RouteUrl 一样创建 url,您可以使用代码隐藏文件中的 GetRouteUrl 方法。 (我知道这不是你问题的答案,但是当我用谷歌搜索这个问题时,我总是能找到你的问题。所以也许它会对某人有所帮助。:-)

标签: asp.net routing url-routing


【解决方案1】:

您还可以使用以下内容:

//using System.Web;
HttpContext.Current.Request.RequestContext.RouteData

【讨论】:

    【解决方案2】:

    您可以使用以下内容:

    RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current));
    

    【讨论】:

    • 请注意,这样做会再次调用路由,这就像 N 个请求访问您的路由表。
    【解决方案3】:
      [HttpGet]
      [Route("{countryname}/getcode/")]
      public string CountryPhonecode()
      {
         // Get routdata by key, in our case it is countryname
         var countryName = Request.GetRouteData().Values["countryname"].ToString();
    
         // your method
         return GetCountryCodeByName(string countryName);
      }
    

    【讨论】:

      【解决方案4】:

      我认为您需要创建一个 RouteHandler,然后您可以在 GetHttpHandler 事件期间将值推送到 HTTPContext。

      foreach (var urlParm in requestContext.RouteData.Values) {
          requestContext.HttpContext.Items[urlParm.Key] = urlParm.Value;
      }
      

      您可以在this MSDN article找到更多信息。

      【讨论】:

        最近更新 更多