第1节. 区域
在模块比较多的大型项目当中,才会使用到区域,在一个 MVC 5项目中,可以存在多个区域,每个区域表示一个完整的业务模块,如一个企业有多个部门,可以使用区域来划分部门。
在每个区域中,具有一套完整的控制器、视图和模型机制,且还可以定制自己区域的路由,这样可以整体规划企业网站的URL地址,便于分发和使用。如下是区域实现的URL地址:
(1). /Home/Index
(2). /Sales/Index
(3). /Sales/Login/validate
(4). /IT/Index
(5). /IT/Login/Validate
其中第一个名称就是区域的名称,如Home、Sales、IT等都是区域中的路由根名称。
第2节. 新建区域
当使用Visual Studio 创建 MVC 5的空项目时,并没有创建区域,需要在创建项目后,再创建区域。
在 MVC 5项目名称上右击,选择“添加”“区域”,此时会弹出一个对话框,输入区域的名称,可以按部门、分公司划分区域。
Mvc 5深入编程-从0基础到深入学习 线上.NET培训课程¥178淘宝购买
在添加区域的对话框中输入新区域的名称,这里输入“AreaUser”,用来表示用户模块。
当我们创建一个区域后,Visual Studio 会自动在MVC 5项目的根目录下添加一个Areas的文件夹,表示该文件夹下全部是关于此区域的模型、视图和控制器。
通过文件结构可以看出,在“AreaUser”文件夹中,存在“Controllers”,“Models”、“Views”这3个文件夹。表示在其中可以创建相应的区域控制器、模型和视图。
并且从路由配置上看,路由URL是从区域名称AreaUser开头的。
第3节. 创建区域控制器和视图
在区域文件夹Areas下,找到“Controllers”文件夹,右击添加一个名称为RegisterUser的控制器。
可见,在区域中是可以再创建控制器的,且一个项目中多个控制器之间是独立的不受影响的,各司其责,通过路由划分开。
现在给RegisterUser控制器中的Index()方法添加一个Index视图,区域视图也是独立的。
区域视图也是存放在Views文件夹下,且也有区域_ViewStart.cshtml布局页,很完整的一套MVC机制。
有了控制器和视图,就可以正常访问了,现在运行一下上面的区域控制器中的Index()方法。
这就是区域的使用,具有独立的控制器、模型和视图,并且就连_ViewStart.cshtml也是独立的。这种模式非常适合大型的Web应用程序开发。
第4节. 路由生成URL
对于 MVC 5的路由来说,其核心功能有2个:
(1). 通过用户键入的URL地址在路由表中寻找正确的路径,然后请求并响应,并将资源返回给用户。
(2). 使用控制器和操作方法,在路由模式中匹配URL,并生成正确的URL地址。
对于URL的生成,最终都是使用RouteCollection.GetVirtualPath()的重载方法来处理的。
在上图中,使用MapRoute()方法可以配置路由模式,路由模式是根据规划好的URL地址创建的,创建的路由模式要合理,且能长久使用,不易更改。
第5节. 绑定到操作
从表面上看,我们只是请求了URL地址,然后根据路由访问到了指定的控制器和操作方法,那么路由访问到具体的操作时,其底层逻辑是什么呢?分为如下几步:
(1). 当我们输入URL地址请求时,UrlRoutingModule会在RouteTable路由表中查找请求过来URL地址。
(2). 如果在RouteTable表中能够找到,则会在路由中获取IRouteHandler接口对象。
(3). 使用接口中的GetHandler()方法,返回一个IHttpHandler对象。
(4). 把请求给ProcessRequest()方法去处理。
(5). 最后在MVC 5中,得到MvcHandler对象生成控制器和操作方法对象,这样就能找到真正要访问的资源了。