本文對ASP.NET MVC的模型、視圖和控制器做一次進階概述,換句話說,就是解釋ASP.NET MVC中的"M""V""C"。閱讀完本文後,你應該理解ASP.NET MVC中的各個部分是如何協同工作的,同時也應該知道ASP.NET MVC應用程式和ASP應用程式及ASP.NET Web表單應用程式之間的不同之處了。
當一個ASP.NET應用程式第一次啟動時,會調用Application_Start()方法,在清單1中,這個方法叫做RegisterRoutes()方法,RegisterRoutes()方法建立預設路由表。
預設路由表只有一條路由記錄,它將所有入站請求分成三段,第一段映射到控制器名字,第二段映射到行為名字,最後一段映射到傳遞給行為的參數Id。
如下面的URL:
/Product/Details/3
這個URL被解析成下面三部分:
Controller = ProductController
Action = Details
Id = 3
注意尾碼Controller跟在Controller參數的結尾,這僅僅是MVC的一個怪癖。
預設路由包括了這三段的預設值,預設控制器是HomeController,預設行為是Index,預設Id是Null 字元串,使用預設值時,思考一下下面的URL該如何解析:
/Employee
這個URL被解析成下面三段:
Controller = HomeController
Action = Index
Id = ""
請求被路由到HomeController類的Index()行為。
理解控制器
控制器控制使用者與ASP.NET MVC應用程式互動的方式,由控制器決定向發送了請求的使用者返回什麼內容。
控制器就是一個類,ASP.NET MVC應用程式範例在控制器檔案夾下只包括了一個名叫HomeController.vb的控制器,HomeController.vb的內容如清單2所示。
清單2 HomeController.vb
Public Class HomeController
Inherits System.Web.Mvc.Controller
Function Index()
ViewData("Title") = "Home Page"
ViewData("Message") = "Welcome to ASP.NET MVC!"
Return View()
End Function
Function About()
ViewData("Title") = "About Page"
Return View()
End Function
End Class