Asp.net MVC路由机制

时间:2023-03-08 16:14:35
Asp.net MVC路由机制

C:/Windows/Microsoft.NET/Framwork/v4.0.30319/config/web.config->

httpModules->

System.Web.Routing.UrlRoutingModule->

Init->

application.PostResolveRequestCache+=new EventHandler(this.OnApplicationPostResolveRequestCache);

Asp.net MVC路由机制

RouteCollectionExtensions类--RouteCollection扩展类  

路由注册 MapRoute

Asp.net MVC路由机制

Asp.net MVC路由机制

Asp.net MVC路由机制

网站第一次被请求时,进行路由注册,路由表里就有路由数据了

路由数据在事件管道之前就已存在

UrlRoutingModule类

Asp.net MVC路由机制

第7个事件(PostResolveRequestCache)上被注册了OnApplicationPostResolveRequestCache方法

Asp.net MVC路由机制

Asp.net MVC路由机制

Asp.net MVC路由机制

一旦URL匹配到路由规则,则创建MVCHandler存入HttpContext;

第8个事件会检查HttpContext里的remapHandler,如果为空,则创建页面类对象。

第11个事件(PreRequestHandlerExecute)、12个事件之间(PostRequestHandlerExecute)调用MVCHandler对象的ProcessRequest方法

1、根据URL获取控制器类名创建对应控制器类对象

2、根据URL获取Action方法名,并调用控制器类对象里对应方法

3、找到视图引擎并获取ViewEngineResult

4、获取请求对应的视图(IView)对象

5、调用Render方法生成HTML