ASP.NET Routing模塊的責任是將傳入的浏覽器請求映射為特有的MVC controller actions。
使用 默認的Route Table
當你創建一個新的ASP.NET MVC應用程序,這個應用程序已經被配置用來使用ASP.NET Routing。 ASP.NET Routing 在2個地方設置。第一個,ASP.NET Routing 在你的應用程序中的Web配置文件( Web.config文件)是有效的。在配置文件中有4個與routing相關的代碼片段:system.web.httpModules代碼段 ,system.web.httpHandlers 代碼段,system.webserver.modules代碼段以及 system.webserver.handlers代 碼段。千萬注意不要刪除這些代碼段,如果沒有這些代碼段,routing將不再運行。第二個,更重要的,route table在應用程序的Global.asax文件中創建。這個Global.asax文件是一個特殊的文件,它包含ASP.NET 應用程序生命周期events的event handlers。這個route table在應用程序的起始event中創將。
在Listing 1中包含ASP.NET MVC應用程序的默認Global.asax文件.
Listing 1 - Global.asax.cs
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/--> 1 public class MvcApplication : System.Web.HttpApplication { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", // 路由名稱 "{controller}/{action}/{id}", // 帶有參數的 URL new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 參 數默認值 ); } protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RegisterRoutes(RouteTable.Routes); } }
當一個MVC應用程序第一個啟動,Application_Start() 方法被調用,這個方法反過來調用 RegisterRoutes() 方法。
這個默認的route table包含一個單一的route。這個默認的route將 url的第一個段映射為一個controller名稱,url的第二個段映射為一個controller action,第三個段映 射為命名為id的參數。
假如,你在網頁浏覽器的地址欄中鍵入下面的url:/Home/Index/3,這個默認的 route將這個url映射為下面的參數:
controller = Home controller名稱
action = Index controller action
id = 3 id的參數
當你請 求/Home/Index/3這樣的url,下面的代碼將執行。HomeController.Index(3)
這個默認的route包含3個 默認的參數。如果你沒有提供一個 controller,那麼 controller默認為Home。同樣,action默認為Index,id 參數默認為空字符串。
讓我們來看一些關於默認的route怎麼映射urls為controller actions的例 子。假如你在你的浏覽器地址欄中輸入如下的url:/Home, 由於這些默認的route參數有一些相關的默認值, 鍵入這樣的URL,將導致HomeController類的Index()方法(如Listing 2)被調用。
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 namespace MvcRoutingApp.Controllers { [HandleError] public class HomeController : Controller { public ActionResult Index(string id) { ViewData["Message"] = "歡迎使用 ASP.NET MVC!"; return View(); } public ActionResult About() { return View(); } } }