none
如何取出目前所在頁面的RouteData? RRS feed

  • 問題

  • 改用.NetFramework4.0 以後網站全面使用Route的方式來控管

    假設Routing定義為:/Test/List/{CODE}

    傳入網址:http://127.0.0.1/Test/List/1234

    在網頁中用RouteData.Values["CODE"]可以取得參數值: "1234"

    但要如何取得前面這個部份「Test/List/」?

    3Q

    p.s.用Request.Url.AbsolutePath會取得「/Test/List/1234」

    2012年11月1日 上午 09:27

解答

  • 謝謝各位的回覆~但我要的是取得現行網頁Route path的部份。

    藉由MVC這條線找到某位強者的解法...依我的需求做成屬性如下:

            public static string CurrentRouteID
            {
                get
                {
                    RouteData currentRoute = RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current));
                    if (currentRoute == null) return string.Empty;
                    FieldInfo field = typeof(RouteCollection).GetField("_namedMap", BindingFlags.Instance | BindingFlags.NonPublic);
                    Dictionary<string, RouteBase> namedMap = field.GetValue(RouteTable.Routes) as Dictionary<string, RouteBase>;
                    return namedMap.First(route => { return route.Value == currentRoute.Route; }).Key;
                }
            }

    • 已提議為解答 KKBruceMVP 2012年11月2日 上午 03:29
    • 已標示為解答 Antarcticat 2012年11月2日 上午 07:14
    2012年11月2日 上午 12:42

所有回覆