之前在 ASP.NET Web Form 的年代要在 類別庫(Class Library) 專案中取得 HttpContext 的資訊,很容易就可以透過 HttpContext.Current 屬性即可獲得所需資訊,也可以判斷 HttpContext.Current 是否為 null 來決定是否目前是在 Web 環境下,雖然到了 ASP.NET MVC 的世界也有 HttpContext.Current 但是我們更需要 RouteData 資訊讓我們能進一步取得 ASP.NET MVC 的相關資訊。
在 類別庫(Class Library) 中一樣可以用 HttpContext.Current 是否為 null 來判斷目前是否為 ASP.NET 的執行環境,而至於要取得 RouteData 資訊可以透過 System.Web.Routing.RouteTable.Routes 這個靜態屬性將 RouteData 型別的資料傳回,請參考以下程式碼:
var route = RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current));
以下是我在 類別庫(Class Library) 中下中斷點取得 Route Values 的示意圖:
而在 類別庫(Class Library) 中要引用 ASP.NET MVC 的資訊至少必須載入以下圖示的兩個組件,如果沒有 System.Web 組件的話也要記得載入:
當你透過上述範例取得 route 物件時,就可以輕易存取 Route Values 了,如下範例:
var controllerName = route.Values["controller"];
var actionName = route.Values["action"];
相關連結