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();
}
}
}