asp.net路由表和请求映射

来源:互联网 发布:矩阵论课后答案 编辑:程序博客网 时间:2024/05/17 04:18

路由的主要责任是将来自浏览器的请求映射到MVCcontroller action

.NET中路由相关的类如图所示:



路由主要体现在两部分:路由注册和请求映射:

 

一、路由注册:

路由注册比较简单,就是向路由表(RouteCollection)中添加路由:

[csharp] view plain copy
 print?
  1. public static void RegisterRoutes(RouteCollection routes)  
  2. {  
  3.     routes.IgnoreRoute("{resource}.axd/{*pathInfo}");  
  4.   
  5.     routes.MapRoute(  
  6.         name: "Default",  
  7.         url: "{controller}/{action}/{id}",  
  8.         defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }  
  9.     );  
  10. }  

 

二、请求映射:

ASP.NET MVC中,请求映射是通过自定义IHttpModule来实现的,

[csharp] view plain copy
 print?
  1. HttpContextWrapper httpContext = new HttpContextWrapper(HttpContext.Current);  
  2. RouteData routeData = routes.GetRouteData(httpContext);  
  3. if (routeData == null)  
  4. {  
  5.   return;   
  6. }  
  7.   
  8. RequestContext context = new RequestContext() { HttpContext = httpContext, RouteData = routeData };  
  9. IHttpHandler handler = routeData.RouteHandler.GetHttpHandler(context);  
  10. httpContext.RemapHandler(handler);   

路由表映射后返回的RouteData包含了ControllerAction等相关信息。然后将这些信息包装起来,交给HttpHandler来进行处理。
0 0