之前把笔记都放在空间日志中隐藏起来,今天看到这句话:作为经常从网上索取免费资料的一员,要有回报的思想,也为了让更多的人少走些弯路,想想自己不能这么自私,所以把空间日志搬到博客园来。闲话不说,直接开始。

 asp.net MVC 分为主要的Controller 、Action、以及Views

下面来分析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一样的处理流程

最新文章

  1. CSS你可能还不知道的一些知识点
  2. HBase Shell 常见操作
  3. ListView实现Item上下拖动交换位置 并且实现下拉刷新 上拉加载更多
  4. Android之ADB指令
  5. 使用Reveal
  6. demo14
  7. 移动端动画使用transform提升性能
  8. How to search compound files
  9. 自己写一个与startWith类似的判断方法
  10. 火球-UML大战需求分析(体验版3.0.2).pdf
  11. MSSQL2005 导出excel文件
  12. web框架之Spring-MVC环境搭建(转)
  13. Express 3.0新手指南入门教程
  14. easyUI tree点击文字展开节点
  15. spring mvc+redis实现微信小程序登录
  16. linux 权限管理
  17. JVM解释器和编译器
  18. China Cloud Computing Conference(2018.07.24)
  19. Configutation读取properties文件信息
  20. linux服务器---squid限制

热门文章

  1. ASP.NET Web API 框架研究 ASP.NET Web API 路由
  2. MFC中处理UI界面时的注意点
  3. uniGUI 通过SessionList操作另外的登录用户
  4. [FMX]获取控件样式中的指定项目以便进行调节
  5. SQL Server 字符串拼接、读取
  6. MVC使用TempData将返回的string传到另一个控制器页面中显示!
  7. Resolving SharePoint Application Authentication Error: Login Failed
  8. HashSet源码解析
  9. 23_pikle/shevel/json
  10. Python-flask跨站请求伪造和跨站请求保护的实现