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

Posted

篇首语:学向勤中得,萤窗万卷书。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET MVC 4框架揭秘:URL路由(2)相关的知识,希望对你有一定的参考价值。

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

     URL路由( )

  ASP NET MVC提供的基于URL模板的路由机制是通过其子类Route实现的 如下面的代码片段所示 它具有一个代表URL模板的字符串类型的Url属性 在实现的GetRouteData方法中 我们通过HttpContextBase获取当前请求的URL 如果它与URL模板的模式相匹配则创建一个RouteData返回 否则返回Null 对于返回的RouteData对象 其Values属性表示的字典对象包含直接通过地址解析出来的变量 而对于DataTokens字典和RouteHandler属性 则直接取自Route对象的同名属性

  public class Route : RouteBase

  

  public IRouteHandler                        RouteHandler get; set;

  public string                           Url get; set;

  public IDictionary<string object>          DataTokens get; set;

  public Route()

  

  this DataTokens           = new Dictionary<string object>()

  this RouteHandler         = new MvcRouteHandler()

  

  public override RouteData GetRouteData(HttpContextBase Context)

  

  IDictionary<string object> variables;

  if (this Match(Context Request

   AppRelativeCurrentExecutionFilePath Substring( ) out variables))

  

  RouteData routeData = new RouteData()

  foreach (var item in variables)

  

  routeData Values Add(item Key item Value)

  

  foreach (var item in DataTokens)

  

  routeData DataTokens Add(item Key item Value)

  

  routeData RouteHandler = this RouteHandler;

  return routeData;

  

  return null;

  

  protected bool Match(string requestUrl

  out IDictionary<string object> variables)

  

  variables                = new Dictionary<string object>()

  string[] strArray    = requestUrl Split( / )

  string[] strArray    = this Url Split( / )

  if (strArray Length != strArray Length)

  

  return false;

  

  for (int i = ; i < strArray Length; i++)

  

  if(strArray [i] StartsWith( ) && strArray [i] EndsWith( ))

  

  variables Add(strArray [i] Trim( ToCharArray()) strArray [i])

  

  

  return true;

  

  

  由于同一个Web应用可以采用多种不同的URL模式 所以需要注册多个继承自RouteBase的路由对象 多个路由对象组成了一个路由表 在我们自定义ASP NET MVC框架中 路由表通过类型RouteTable表示 如下面的代码片段所示 RouteTable仅仅具有一个类型为RouteDictionary的Routes属性表示针对整个Web应用的全局路由表

  public class RouteTable

  

  public static RouteDictionary Routes get; private set;

  static RouteTable()

  

  Routes = new RouteDictionary()

  

  

  RouteDictionary表示一个具名的路由对象的列表 我们直接让它继承自泛型的字典类型Dictionary<string RouteBase> 其中的Key表示路由对象的注册名称 在GetRouteData方法中 我们遍历集合找到与指定的HttpContextBase对象匹配的路由对象 并得到对应的RouteData

  public class RouteDictionary: Dictionary<string RouteBase>

  

  public RouteData GetRouteData(HttpContextBase Context)

  

  foreach (var route in this Values)

  

  RouteData routerouteData = route GetRouteData(Context)

  if (null != routeData)

  

  return routeData;

  

  

  return null;

  

  

       返回目录 ASP NET MVC 框架揭秘

       编辑推荐

       ASP NET开发培训视频教程

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

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

cha138/Article/program/net/201311/16111

相关参考

知识大全 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)小编为大家搜集整理后发布的内容,让我们赶快一起来看一