一、基本概念:
在传统情况下,http: //localhost/Default.aspx表示请求网站根目录下的Default.aspx文件。
在ASP.NET MVC中,Routing处理一切请求,然后从请求的URL中确定controller名称、action名称和各种参数。
Controller执行对应的Action,Action处理表现逻辑或者跳转等。默认是不执行任何xxx.aspx文件请求的。
这也是使用了ASP.NET MVC后与传统ASP.NET应用最大的差别。详细流程如下,
二、框架执行顺序:
如上图所示,
首先,用户通过Web浏览器向服务器发送一条url请求,这里请求的url不再是xxx.aspx格式,而是http:// HostName/ControllerName/ActionName/Parameters的样子。
这个请求被ASP.NET MVC的路由映射系统截获。路由映射系统按照映射规则,解析出控制器名ControllerName,Action名ActionName和各个参数Parameters,然后,找寻Controllers目录下的ControllerNameController.cs这个控制器类,默认情况下,系统总是找寻Controllers目录下的“控制器名+Controller”这么一个类。
然后,找寻这个类下与ActionName同名的方法,找到后,将Parameters作为参数传给这个方法,而后Action方法开始执行,执行后返回的是ActionResult类型(可以是view、json、redirect等)。
ActionResult其中的一个类型是视图,默认情况下,会返回Views目录下与ControllerName同名的目录下的与ActionName同名的aspx文件,并且将ViewData传递到视图。ViewData中一般包含了控制视图显示的控制量以及视图显示需要的数据,ViewData是控制器与View传递数据的方法之一。
我们按以上思路回顾一下上一篇中主页的请求过程。我们传递的url是http: //localhost/Home/Index。默认路由规则下,将ControllerName设为“Home”,ActionName设为“Index”,没有参数。
于是系统找寻Controllers目录下的HomeController类的Index方法,成功找到,于是执行之。
这个方法调用Model取出一些数据,放入ViewData相应键值项里。然后返回视图,返回的是Views下Home下的Index.aspx。
这个视图取出ViewData中的数据按照一定格式呈现,于是完成了一次典型的ASP.NET MVC调用。
下一篇中我们将详细介绍URL routing。
---------------------------------------------------------------------------
参考资源:
构建不带 Web 窗体的 Web 应用程序
http://msdn.microsoft.com/zh-cn/magazine/cc337884.aspx
一个简单的ASP.NET MVC应用程序
http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032374939&Culture=zh-CN
ASP.NET MVC全局观
http://www.cnblogs.com/leoo2sk/archive/2008/11/01/1324168.html