【概述】
看了蒋金楠先生的《Asp.Net Mvc框架揭密》,这本书详细地讲解了mvc的原理,很深奥也很复杂,看了几遍才将就明白了一点。他在第一章用了一个他自己写的mvc框架作为例子,代码 看着有点多,所以为了帮助理解,我想用截图的方式一步一步地描述mvc的流程,本人能力有限,写的不好,还望大家包涵。如果蒋老师看到这篇文章,也希望能 对我理解错误的地方进行指正。
一、先在web.config中注册自定义的HttpModule
![](https://i-blog.csdnimg.cn/blog_migrate/c6534b40b088ab2e2c092a5149512c14.png)
二、输入网址
![](https://i-blog.csdnimg.cn/blog_migrate/e8ad113af5385bebe93529bd81893c07.png)
三、添加默认的路由规则
![](https://i-blog.csdnimg.cn/blog_migrate/ec94c8d075d540e42dcd25afb219d422.png)
四、注册PostResolveRequestCache事件
![](https://i-blog.csdnimg.cn/blog_migrate/ea681b017948c3428b14941fd214f7de.png)
五、解析RouteData
![](https://i-blog.csdnimg.cn/blog_migrate/41040069b849a7e6f45d98ee26f69cd3.png)
六、解析请求的controller和action
![](https://i-blog.csdnimg.cn/blog_migrate/6a58ff7af65fe0bf25f8b96522e1e3fc.png)
七、封装RequestContext
![](https://i-blog.csdnimg.cn/blog_migrate/89f8c95b55cde5bf14d7f6b57016a100.png)
八、获取MvcHandler
![](https://i-blog.csdnimg.cn/blog_migrate/26a1f7c29af414fc3ed5e8e7f61497b0.png)
九、指定MvcHandler处理http请求
![](https://i-blog.csdnimg.cn/blog_migrate/739e58fae05a371776db66276d508c49.png)
十、通过反射建立Controller对象
![](https://i-blog.csdnimg.cn/blog_migrate/5aef1ebc43ac856c0429d606853289e2.png)
十一、通过反射建立Controller对象
![](https://i-blog.csdnimg.cn/blog_migrate/079afba441fb61f83ec0b7dd68fa4047.png)
十二、用生成的controller对象执行请求
![](https://i-blog.csdnimg.cn/blog_migrate/0ce339dd4df94399da3b5c77ae0aa23a.png)
十三、通过反射建立Action
![](https://i-blog.csdnimg.cn/blog_migrate/4f23c1b87ea9ff68b174d9051ce6bd42.png)
十四、通过反射建立Action
![](https://i-blog.csdnimg.cn/blog_migrate/9f4f78695126ea007d51d95a731b813f.png)
十五、由自定义的RawContentResult显示结果
![](https://i-blog.csdnimg.cn/blog_migrate/1a89478e707776e6833d433085e6f9cb.png)
十六、结果显示
![](https://i-blog.csdnimg.cn/blog_migrate/2c6756a05ea1e11c906341aaa053c67e.png)
【总结】
上面所用的代码是从蒋先生的博客上下载的源码,看过书后用断点一步步跟了几遍,稍微理解了点这个流程。用蒋先生的话做个总结:实际上整个ASP.NET MVC框架就是通过自定义的HttpMoudle(UrlRoutingModule)和HttpHandler(MvcHandler)实现的。
希望此文能帮到更多在学习mvc的朋友,谢谢支持。