The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

ASP.NET MVC 開發心得分享 (13):在類別庫取得 RouteData

之前在 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) 中下中斷點取得 Route Values 的示意圖

而在 類別庫(Class Library) 中要引用 ASP.NET MVC 的資訊至少必須載入以下圖示的兩個組件,如果沒有 System.Web 組件的話也要記得載入:

當你透過上述範例取得 route 物件時,就可以輕易存取 Route Values 了,如下範例:

var controllerName = route.Values["controller"]; 
var actionName = route.Values["action"];

相關連結