本文对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是空字符串,使用默认值时,思考一下下面的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