51

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

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

有没有类似...

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

...您可以全局访问,就像您可以使用 HttpContext 一样?

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

4

4 回答 4

162

您还可以使用以下内容:

//using System.Web;
HttpContext.Current.Request.RequestContext.RouteData
于 2011-05-12T10:48:57.997 回答
36

您可以使用以下内容:

RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current));
于 2009-10-07T13:10:46.500 回答
1
  [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);
  }
于 2019-05-20T10:33:22.513 回答
0

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

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

您可以在此 MSDN 文章中找到更多信息。

于 2009-06-15T00:01:38.770 回答