MVC 路由进阶(一)

在浏览器中输入一段url地址,就可以打开网站浏览效果,在你回车后等待网站打开的哪一小段时间里,后台是怎么样处理的呢?

下面来说说MVC路由知识:

 

---------------------------------目录大纲---------------------------------

1.路由管道解析

2.UrlRoutingModule类

3.IRouteHandler接口

4.IHttpHandler接口

 

 

一、路由管道解析

 

 

   用户请求-->UrlRoutingModule(路由解析)-->匹配路由(RouteTable,Route)-->IRouteHandler(路由处理)-->IHttpHandler(Http处理)-->...

 

  当用户发起一个URL请求,UrlRoutingModule来响应用户的请求,来分析匹配路由得到Route对象,然后由相应的IRouteHandler来进行路   由处理,最后分发到IHttpHandler相应的对象来定位执行对应的action方法。

 

  

  这里的UrlRoutingModule继承IhttpModule类,我们自己也可以写路由解析代码,只要写一个继承IhttpModule的类并在webconfig中配     置即可。

 

 UrlRoutingModule的默认配置如下:

 

 

二.UrlRoutingModule类

 

在上面我们已经简单的说了一下UrlRoutingModule类,哪么UrlRoutingModule是如何解析路由,匹配路由的,怎样交由IRouteHandler处理程序处理路由的呢? 下面简单的来讲:

 

当程序第一次启动的时候会Application_Start()方法,然后会把相应的路由信息放在静态的RouteCollection中。

比如下面:把一个Route对象加到RouteCollection中,这样UrlRoutingModule就可以在运行的时候获取Route路由列表了。

 

 

哪接下来还原一下UrlRoutingModule是怎么写的吧,相信大家看完以后会明白的:

 

 

程序一进来会先后执行: void context_PostResolveRequestCache(object sender, EventArgs e)方法和 void context_PostMapRequestHandler(object sender, EventArgs e) 在这两个方法里就是处理匹配路由。

 

其中   IHttpHandler hand = handler.GetHttpHandler(new RequestContext(context, routeData)); 这一句是获取IHttpHandler 处理程序。

 

程序测试用而以,写的比较粗糙,少了很多判断。

 

 

有关用mvc做的网站,大家可以试试:http://www.tita.com?inviteUserId=F59EBD084D66B898A748A4E7DE281303

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值