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

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"];

相關連結