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