知识大全 ASP.NET MVC 4框架揭秘:URL路由(1)

Posted

篇首语:枕上从妨一夜睡,灯前读尽十年诗。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET MVC 4框架揭秘:URL路由(1)相关的知识,希望对你有一定的参考价值。

ASP.NET MVC 4框架揭秘:URL路由(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

     URL路由( )

  对于一个ASP NET MVC应用来说 针对HTTP请求的处理实现在某个Controller类型的某个Action方法中 每个HTTP请求不再像ASP NET Web Forms应用一样是对应着一个物理文件 而是对应着某个Controller的某个Action 目标Controller和Action的名称包含在HTTP请求的URL中 而ASP NET MVC的首要任务就是通过当前HTTP请求的解析得到正确的Controller和Action的名称 这个过程是通过ASP NET MVC的URL路由机制来实现的

  RouteData

  ASP NET定义了一个全局的路由表 路由表中的每个路由对象包含一个URL模板 目标Controller和Action的名称可以通过路由变量以占位符(比如 controller 和 action )定义在URL模板中 也可以作为路由对象的默认值 对于每一个抵达的HTTP请求 ASP NET MVC会遍历路由表找到一个具有与当前请求URL模式相匹配的路由对象 并最终解析出以Controller和Action名称为核心的路由数据 在我们自定义的ASP NET MVC框架中 路由数据通过具有如下定义的RouteData类型表示

  public class RouteData

  

  public IDictionary<string object>        Values get; private set;

  public IDictionary<string object>        DataTokens get; private set;

  public IRouteHandler                      RouteHandler get;  set;

  public RouteBase                          Route get; set;

  public RouteData()

  

  this Values     = new Dictionary<string object>()

  this DataTokens = new Dictionary<string object>()

  this DataTokens Add( namespaces new List<string>())

  

  public string Controller

  

  get

  

  object controllerName = string Empty;

  this Values TryGetValue( controller out controllerName)

  return controllerName ToString()

  

  

  public string ActionName

  

  get

  

  object actionName = string Empty;

  this Values TryGetValue( action out actionName)

  return actionName ToString()

  

  

  

  如上面的代码片段所示 RouteData定义了两个字典类型的属性Values和DataTokens 前者代表直接从请求地址解析出来的变量列表 后者代表具有其他来源的变量列表 表示Controller和Action名称的同名属性直接从Values字典中提取 对应的Key分别为controller和action

  我们之前已经提到过ASP NET MVC本质上是由两个自定义的ASP NET组件来实现的 一个是自定义的HttpModule 另一个是自定义的HttpHandler 而后者从RouteData的RouteHandler属性获得 RouteData的RouteHandler属性类型为IRouteHandler接口 如下面的代码片段所示 该接口具有一个唯一的GetHttpHandler用于返回真正用于处理HTTP请求的HttpHandler对象

  public interface IRouteHandler

  

  IHttpHandler GetHttpHandler(RequestContext requestContext)

  

  IRouteHandler接口的GetHttpHandler方法接受一个类型为RequestContext的参数 顾名思义 RequestContext表示当前(HTTP)请求的上下文 其核心就是对当前HttpContext和RouteData的封装 这可以通过如下的代码片段看出来

  public class RequestContext

  

  public virtual HttpContextBase  HttpContext get; set;

  public virtual RouteData            RouteData get; set;

  

  Route和RouteTable

  RouteData具有一个类型为RouteBase的Route属性 表示生成路由数据对应的路由对象 如下面的代码片段所示 RouteBase是一个抽象类 它仅仅包含一个GetRouteData方法 该方法判断是否与当前请求相匹配 并在匹配的情况下返回用于封装路由数据的RouteData对象 该方法接受一个表示当前HTTP上下文的HttpContextBase对象 如果与当前请求不匹配 则返回Null

  public abstract class RouteBase

  

  public abstract RouteData GetRouteData(HttpContextBase Context)

  

       返回目录 ASP NET MVC 框架揭秘

       编辑推荐

       ASP NET开发培训视频教程

       Microsoft NET框架程序设计视频教程

       Java程序性能优化 让你的Java程序更快 更稳定

cha138/Article/program/net/201311/16112

相关参考

知识大全 ASP.NET MVC 4框架揭秘:URL路由(3)

ASP.NETMVC4框架揭秘:URL路由(3)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 ASP.NET MVC 4框架揭秘:Controller的激活与URL路由[1]

ASP.NETMVC4框架揭秘:Controller的激活与URL路由[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让

知识大全 ASP.NET MVC 4框架揭秘:Controller的激活与URL路由[2]

ASP.NETMVC4框架揭秘:Controller的激活与URL路由[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让

知识大全 ASP.NET MVC 4框架揭秘

ASP.NETMVC4框架揭秘  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  第章ASPNET+

知识大全 ASP.NET MVC 4框架揭秘:默认实现

ASP.NETMVC4框架揭秘:默认实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &nbs

知识大全 ASP.NET MVC 4框架揭秘:总体设计

ASP.NETMVC4框架揭秘:总体设计  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  第章&n

知识大全 ASP.NET MVC 4框架揭秘:ControllerFactory[2]

ASP.NETMVC4框架揭秘:ControllerFactory[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们

知识大全 ASP.NET MVC 4框架揭秘:ControllerFactory[1]

ASP.NETMVC4框架揭秘:ControllerFactory[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们

知识大全 ASP.NET MVC 4框架揭秘:Controller(1)

ASP.NETMVC4框架揭秘:Controller(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 ASP.NET MVC 4框架揭秘:Controller(3)

ASP.NETMVC4框架揭秘:Controller(3)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一