asp.net MVC 的处理流程
之前把笔记都放在空间日志中隐藏起来,今天看到这句话:作为经常从网上索取免费资料的一员,要有回报的思想,也为了让更多的人少走些弯路,想想自己不能这么自私,所以把空间日志搬到博客园来。闲话不说,直接开始。
下面来分析Asp.net MVC的处理流程:
Controller 负责将获取Model数据并将Model传递个View对象,通知View对象显示。
处理流程:
1.用户发起请求---》UrlRouting获取请求—》MvcRouteHandler.GetHttpHandler()—>MvcHandler.ProcessRequest()
2.UrlRouting获取浏览器发起的请求
将RoutData与HttpContext合并成为RequestContext传递到IRoutHandler接口,IRoutHandler接口的实现类MvcRouteHandler接口到RequestContext参数,返回一个MvcHandler对象,并且为这个对象赋值RequestContext
3.MvcHandler对象
根据RequestContext参数解析出RouteData以及HttpContext,根据RouteData来查找出Controller以及对象的Action及其Parameters
4.MvcHandler .ProcessRequest()方法的处理流程
MvcHandler对象根据工厂方法获取到具体的Controller---->Controller.Execute()--->释放Controller对象
这其中最主要的是MvcHandler对象根据传入的RequestContext参数来获取到具体的Controller,并执行其Execute()方法
5.Controller.Execute()方法处理流程 查找Action
获取Action--->调用ActionResult(Abstract方法)的ActionResult.ExecuteResult()方法
6.ActionResult.ExecuteResult()方法
获取到IView对象,--》根据Iview对象的页面路径获取到具体的Page,--->调用IView.RenderView()方法显示页面
IView对象中存储的是页面的路径地址,最终通过页面引擎(View Engine)使用该路径生成具体的页面类,ViewPage(System.Web.Mvc.ViewPage)是实现了IView接口的对象。
7,最终页面就可以正确的显示。
ViewPage.RenderPartialView() 显示.ascx文件或者是ViewPage.RenderView() 显示.aspx文件。
现在MVC 3中使用的是Razor视图引擎,和WebFormViewEngine一样的处理流程
asp.net MVC 的处理流程的更多相关文章
- ASP.NET MVC的请求处理流程
(1)用户打开浏览器,在地址栏输入某个网址URL并回车,浏览器便开始向该URL指向的服务器发送HTTP请求(一般是GET方式).(2)服务器端的网站服务系统(IIS)接收到该请求,先检查自己是否认识该 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列
http://www.cnblogs.com/hanyinglong/archive/2013/03/22/2976478.html ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开 ...
- Asp.net Mvc 请求是如何到达 MvcHandler的——UrlRoutingModule、MvcRouteHandler分析,并造个轮子
这个是转载自:http://www.cnblogs.com/keyindex/archive/2012/08/11/2634005.html(那个比较容易忘记,希望博主不要生气的) 前言 本文假定读者 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开篇
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开篇 前言:博客又有一段时间没有更新了,心里感觉这段时间空空的,好像什么都没有学下,所以就想写博客,所以就有了这个系列,这里当然也 ...
- ASP.NET MVC显示WebForm网页或UserControl控件
ASP.NET MVC显示WebForm网页或UserControl控件 学习与使用ASP.NET MVC这样久,还是对asp.net念念不忘.能否在asp.net mvc去显示aspx或是user ...
- Asp.Net MVC 3
Asp.Net MVC 3 wcf基础教程之 契约(合同)Contract 摘要: 在前几篇博客中我有说到服务的寄宿,就是服务要运行起来必须采取的几种方式,相当于我们可以照葫芦画瓜的效果运行一个w ...
- 念念不忘,ASP.NET MVC显示WebForm网页或UserControl控件
学习与使用ASP.NET MVC这样久,还是对asp.net念念不忘.能否在asp.net mvc去显示aspx或是user control呢?这个灵感(算不上灵感,只能算是想法)是来自前些天有写过一 ...
- ASP.Net请求处理机制初步探索之旅 - Part 5 ASP.Net MVC请求处理流程
好听的歌 我一直觉得看一篇文章再听一首好听的歌,真是种享受.于是,我在这里嵌入一首好听的歌,当然你觉得不想听的话可以点击停止,歌曲 from 王菲 <梦中人>: --> 开篇:上一篇 ...
- ASP.NET MVC学前篇之请求流程
ASP.NET MVC学前篇之请求流程 请求流程描述 对于请求的流程,文章的重点是讲HttpApplication和HttpModule之间的关系,以及一个简单的示例实现.(HttpModule又是M ...
随机推荐
- htpasswd建立和更新存储用户名、密码
htpasswd建立和更新存储用户名.密码的文本文件, 用于对HTTP用户的basic认证. # /usr/local/apache/bin/htpasswd --help Usage: htpass ...
- 3.Ubuntu下安装mysql并在windows下使用Navicat来连接
一.安装mysql(只需要三条命令) 1.第一条命令(中间需要输入root用户密码): sudo apt-get install mysql-server 2.第二条命令: sudo apt-get ...
- .net 使用HtmlAgilityPack做爬虫
HtmlAgilityPack官网:https://html-agility-pack.net/?z=codeplex .net中使用HtmlAgilityPack做爬虫步骤: 1.在nuget中安装 ...
- UVA12888 【Count LCM】(莫比乌斯反演)
题意:求\(\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)==1]\) \(assume\ n<m\) \(\sum_{i=1}^{n}\sum_{j=1}^{m}[ ...
- 学习人工智还死拽着Python不放?大牛都在用Anaconda5.2.0
前言 最近有很多的小白想学习人工智能,可是呢?依旧用Python在学习.我说大哥们,现在都什么年代了,还在把那个当宝一样拽着死死不放吗?懂的人都在用Anaconda5.2.0,里面的功能可强大多了,里 ...
- 文件上传下载、socketserver(并发)、解读socketserver源码
1.文件上传/下载 学习了socket套接字,我们现在可以写一个文件上传/下载的程序,如下示例: 分析上边代码,我们发现,client发送上传文件相关信息的字典序列化之后,server又给client ...
- 2018宁夏邀请赛网赛 I. Reversion Count(java练习题)
题目链接 :https://nanti.jisuanke.com/t/26217 Description: There is a positive integer X, X's reversion c ...
- postgresql 简单入门
安装 https://www.postgresql.org/download/linux/redhat/yum install https://download.postgresql.org/pub/ ...
- js 的this
js的this应该是不好掌握又必须要掌握的东西 主要参考: http://www.cnblogs.com/pssp/p/5216085.html http://www.cnblogs.com/fron ...
- 设计模式《JAVA与模式》之状态模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述状态(State)模式的: 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为 ...