博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
asp.net mvc的生命周期{转}
阅读量:6826 次
发布时间:2019-06-26

本文共 1580 字,大约阅读时间需要 5 分钟。

asp.net mvc的生命周期主要分三个阶段

1、网址路由对比

2、找到对应的Controller执行相应的Action

3、执行View并返回结果


完整的生命周期

Request->UrlRoutingModule->RouteHandler->MvcHandler->

DefaultControllerFactory->Controller->View Factory->View->Response


执行control和view

当程序执行到MvcHandler,它的入口是ProcessRequest,在MvcHandler中的ProcessRequest


        protected internal virtual void ProcessRequest(HttpContextBase httpContext) {

            SecurityUtil.ProcessInApplicationTrust(() => {

                IController controller;

                IControllerFactory factory;

                ProcessRequestInit(httpContext, out controller, out factory);


                try {

                    controller.Execute(RequestContext);

                }

                finally {

                    factory.ReleaseController(controller);

                }

            });

        }

第一步:获取Controller,ControllerFactory


// 获取控制器的名称

string controllerName = RequestContext.RouteData.GetRequiredString("controller");


//获取控制器工厂,默认是DefaultControllerFactory

factory = ControllerBuilder.GetControllerFactory();


//创建控制器

controller = factory.CreateController(RequestContext, controllerName);



第二步:执行Controller的Action


 controller.Execute(RequestContext);

 最后调用Controller的ExecuteCore方法

        protected override void ExecuteCore() {

            // If code in this method needs to be updated, please also check the BeginExecuteCore() and

            // EndExecuteCore() methods of AsyncController to see if that code also must be updated.


            PossiblyLoadTempData();

            try {

                string actionName = RouteData.GetRequiredString("action");

                if (!ActionInvoker.InvokeAction(ControllerContext, actionName)) {

                    HandleUnknownAction(actionName);

                }

            }

            finally {

                PossiblySaveTempData();

            }

        }


第三步:执行View

如果从Action返回的是ViewResult,Mvc会调用实现IViewEngine对象的FindView方法,然后再调用实现IView(WebFormView)的Render()方法,将

Html返回给客户端

转载地址:http://lcykl.baihongyu.com/

你可能感兴趣的文章
酷炫的显示主页面
查看>>
CAA如何进行干涉检查?
查看>>
silverlight vs flash
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
可执行JAR读写内外文件
查看>>
Handbook of Constraints Programming——Chapter4 Backtracking Search Algorithms-Preliminaries
查看>>
[转载] 信息系统项目管理师视频教程——14 项目进度管理
查看>>
linux 解压文件
查看>>
Ansible入门
查看>>
SVN学习总结(1)——SVN简介及入门使用
查看>>
浅谈linux性能调优之五:调优软raid
查看>>
Android sdk下载缓慢解决方式
查看>>
IBM TPC强化中国建设银行存储管理能力
查看>>
常用ftp子命令的总结
查看>>
正则表达式
查看>>
在 JS 中使用 fetch 更加高效地进行网络请求
查看>>
javascript 分页算法
查看>>
android手机root后的安全问题
查看>>
bat改ip
查看>>