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

本文共 1649 字,大约阅读时间需要 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返回给客户端

转载于:https://www.cnblogs.com/50614090/archive/2012/02/14/2350918.html

你可能感兴趣的文章
wamp自定义网站根目录及多站点配置
查看>>
GPT转MBR完整图文教程
查看>>
转载:《TypeScript 中文入门教程》 6、命名空间
查看>>
友情链接
查看>>
JavaScript测试工具
查看>>
QC学习三:Excel数据导入导出QC操作流程
查看>>
Combination Sum II
查看>>
对象数组的练习
查看>>
xamarin android 实现二维码带logo生成效果
查看>>
requirejs amd module load example
查看>>
实验13
查看>>
递归插入排序
查看>>
iOS学习之iOS程序名称及内容国际化(本地化)
查看>>
生产案例、Linux出现假死,怎么回事?
查看>>
树结构(三)---- 多路查找树
查看>>
07深入理解C指针之---指针类型和长度
查看>>
06深入理解C指针之---指针操作和比较
查看>>
SQL Server发送邮件的存储过程
查看>>
【20160924】GOCVHelper 图像处理部分(3)
查看>>
音视频处理中的硬压缩与软压缩
查看>>