asp.net mvc的生命周期{转}
2012-08-23 15:39
78 查看
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返回给客户端
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返回给客户端
相关文章推荐
- ASP.NET MVC的请求生命周期
- ASP.NET MVC生命周期介绍
- ASP.NET MVC 请求生命周期
- Asp.net MVC生命周期(转)
- 路由网址这是mvc时代系列之三:网络路由与ASP.NET MVC生命周期(上)
- ASP.NET MVC生命周期介绍
- asp.net mvc 中 tempdata、viewdata、viewbag生命周期(转载)
- ASP.NET MVC请求的生命周期
- ASP.NET MVC生命周期介绍
- ASP.NET MVC生命周期
- 基于asp.net MVC 应用程序的生命周期(详解)
- [收藏]Asp.net MVC生命周期
- 详解ASP.NET MVC的请求生命周期
- ASP.NET MVC深度接触:ASP.NET MVC请求生命周期
- ASP.NET MVC深度接触:ASP.NET MVC请求生命周期
- ASP.NET MVC生命周期介绍
- ASP.NET MVC 生命周期
- ASP.NET MVCPreview生命周期分析
- ASP.NET MVC请求处理管道生命周期的19个关键环节(1-6)
- ASP.NET整体运行机制+asp.net请求管道+页面生命周期+MVC整体运行机制原理图