建立自訂路由 (VB)
由 Microsoft 提供
了解如何將自訂路由新增至 ASP.NET MVC 應用程式。 在此教學課程中,您將了解如何修改 Global.asax 檔案中的預設路由表。
在此教學課程中,您會了解如何將自訂路由新增至 ASP.NET MVC 應用程式。 您會了解如何使用自訂路由來修改 Global.asax 檔案中的預設路由表。
在 ASP.NET MVC 應用程式中,預設路由表可正常運作。 不過,您可能會發現您有特製化路由需求。 在此情況下,您可以建立自訂路由。
例如,假設您要建置部落格應用程式。 您可能要處理如下所示的傳入要求:
/Archive/12-25-2009
當使用者輸入此要求時,您想要傳回對應至日期 12/25/2009 的部落格項目。 若要處理這種類型的要求,您必須建立自訂路由。
清單 1 中的 Global.asax 檔案包含名為 Blog 的新自訂路由,其會處理類似 /Archive/項目日期的要求。
清單 1 - Global.asax (含自訂路由)
Public Class MvcApplication
Inherits System.Web.HttpApplication
Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
' MapRoute takes the following parameters, in order:
' (1) Route name
' (2) URL with parameters
' (3) Parameter defaults
routes.MapRoute( _
"Blog", _
"Archive/{entryDate}", _
New With {.controller = "Archive", .action = "Entry"} _
)
routes.MapRoute( _
"Default", _
"{controller}/{action}/{id}", _
New With {.controller = "Home", .action = "Index", .id = ""} _
)
End Sub
Sub Application_Start()
RegisterRoutes(RouteTable.Routes)
End Sub
End Class
您新增至路由表的路由順序很重要。 會在現有的預設路由之前新增新的自訂部落格路由。 如果您反轉順序,則預設路由一律會呼叫,而不是自訂路由。
自訂 Blog 路由會比對以 /Archive/ 開頭的任何要求。 因此,其會比對下列所有 URL:
/Archive/12-25-2009
/Archive/10-6-2004
/Archive/apple
自訂路由會將傳入要求對應至名為 Archive 的控制器,並叫用 Entry() 動作。 呼叫 Entry() 方法時,項目日期會當做名為 entryDate 的參數傳遞。
您可以在清單 2 中搭配控制器使用部落格自訂路由。
清單 2 - ArchiveController.vb
Public Class ArchiveController
Inherits System.Web.Mvc.Controller
Function Entry(ByVal entryDate As DateTime)
Return "You requested the entry from " & entryDate.ToString()
End Function
End Class
請注意,清單 2 中的 Entry() 方法接受 DateTime 類型的參數。 MVC 架構具有足夠智慧,可將 URL 的項目日期自動轉換成 DateTime 值。 如果 URL 的項目日期參數無法轉換成 DateTime,就會引發錯誤 (參見圖 1)。
圖 1 - 轉換參數時發生錯誤
圖 01:轉換參數時發生錯誤 (按一下以檢視全尺寸影像)
摘要
此教學課程的目標是要示範如何建立自訂路由。 您已了解如何將自訂路由新增至代表部落格項目的 Global.asax 檔案中的路由表。 我們已討論如何將部落格項目的要求對應至名為 ArchiveController 的控制器,以及名為 Entry() 的控制器動作。