ASP.NET MVC Preview生命周期分析(二)

回到MvcHandler的 ProcessRequest , DefaultControllerFactory.CreateController(RequestContext, requiredString) 来返回 IController 实例。下面看看 DefaultControllerFactory的代码:

通过反射来创建 Controller 实例 ,GetControllerType 里面做了些缓存处理,以此来避免频繁使用反射造成的性 能问题。继续

MvcHandler.ProcessRequest(),在得到控制器实例后, MvcHandler 开始了调用 Controller.Execute() 来进一步后续操作,同时对其上 下文进一步封装,除了前面创建的 RequestContext,还加上了当前这个 Controller 对象的引用,类名叫ControllerContext。

namespace System.Web.Mvc {
  using System.Web.Routing;
   [AspNetHostingPermission (System.Security.Permissions.SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
   [AspNetHostingPermission (System.Security.Permissions.SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
  public class ControllerContext : RequestContext {
    public ControllerContext(HttpContextBase httpContext, RouteData routeData, IController controller)
      : base(httpContext, routeData) {
      if (controller == null) {
        throw new ArgumentNullException("controller");
      }
      Controller = controller;
    }
     public ControllerContext(RequestContext requestContext, IController controller)
      : this(GetRequestContext (requestContext).HttpContext, GetRequestContext (requestContext).RouteData, controller) {
    }
     public IController Controller {
      get;
       private set;
    }
    internal static RequestContext GetRequestContext(RequestContext requestContext) {
      if (requestContext == null) {
        throw new ArgumentNullException("requestContext");
      }
      return requestContext;
    }
  }
}

时间: 2024-09-17 04:34:40

ASP.NET MVC Preview生命周期分析(二)的相关文章

ASP.NET MVC Preview生命周期分析(一)

做ASP.NET WebForm开发都知道,ASP.NET有复杂的生命周期,学习ASP.NET MVC就要深入理解它的生命周期.今天从CodePlex上下载了ASP.NET Preview 2 的 源代码,还有两个程序集Routing与Abstractions并未发布,不过这两个程序集的 类并不多,可以用NET反编译工具 Reflector解开来看看,可惜这两个程序集用的 是VS2008使用.net 3.5开发的,用了c# 3.0的很多特性,Reflector反编译不完全 . ASP.NET M

ASP.NET MVC Preview生命周期分析(三)

详细看看InvokeAction方式的执行: protected internal bool InvokeAction(string actionName) { return InvokeAction (actionName, new RouteValueDictionary()); } protected internal virtual bool InvokeAction(string actionName, RouteValueDictionary values) { if (String

ASP.NET AJAX客户端生命周期分析(理论篇)

一.引言 微软的ASP.NET AJAX框架,作为一个相对比较完善的AJAX框架,有许多方面值得我们作深入研究.本文中,我们将结合一个具体的例子试图探究ASP.NET AJAX框架的客户端生命周期过程. [注]阅读本文最好要结合"ASP.NET应用程序生命周期概述"和"ASP.NET页面生命周期概述"两篇文章共同学习. 二.ASP.NET AJAX客户端生命周期原理 因为ASP.NET AJAX框架在开发思路上极大地借鉴了ASP.NET 2.0的开发技术,而且将会被

ASP.NET服务器控件的生命周期分析_实用技巧

本文实例分析了ASP.NET服务器控件的生命周期.分享给大家供大家参考.具体如下: (1)初始化----在此阶段中,主要完成两项工作:一.初始化在传入Web请求生命周期内所需的设置:二.跟踪视图状态.首先,页面框架通过默认方式引发Init事件,并调用OnInit()方法,控件开发人员可以重写该方法为控件提供初始化逻辑.此后,页面框架将调用TrackViewState方法来跟踪视图状态.需要注意的是:多数情况下,Control基类提供的TrackViewState方法实现已经足够了.只有在控件定义

ASP.NET AJAX客户端生命周期分析(实践篇)

一.引言 在上篇中,我们对微软的ASP.NET AJAX框架的客户端生命周期过程作了理论上的分析.在本篇中,我们要结合一个具体示例针对页面的客户端生命周期期间有关重要事件的发生顺序进行剖析. 二.举例 (一)说明 下面的这个例子展示了在一个有两个嵌套的UpdatePanel控件的页面的客户端事件将被如何引发.请注意点击父面板中的按钮与内嵌的UpdatePanel控件中按钮之间的区别.在父面板中的按钮将引起父面板的更新,而嵌在内部的面板将被删除并重新创建.内嵌面板的按钮点击仅引起内嵌面板的更新.

Asp.net页面的生命周期

asp.net|页面 介绍 Asp.net是微软.Net战略的一个组成部分.它相对以前的Asp有了很大的发展,引入了许多的新机制.本文就Asp.net页面的生命周期向大家做一个初步的介绍,以期能起到指导大家更好.更灵活地操纵Asp.net的作用. 当一个获取网页的请求(可能是通过用户提交完成的,也可能是通过超链接完成的)被发送到Web服务器后,这个页面就会接着运行从创建到处理完成的一系列事件.在我们试图建立Asp.net页面的时候,这个执行周期是不必去考虑的,那样只会自讨苦吃.然而,如果被正确的

asp.net页面的生命周期是怎么样的,简单易懂点的,谢谢啊

问题描述 asp.net页面的生命周期是怎么样的,简单易懂点的,谢谢啊 解决方案 解决方案二:msdn上有详细描述:ASP.NET页生命周期概述http://msdn.microsoft.com/zh-cn/library/ms178472(VS.80).aspx

ASP.NET页生命周期和ASP.NET应用程序生命周期有什么不同?

问题描述 ASP.NET页生命周期包括在ASP.NET应用程序生命周期里吗?? 解决方案 解决方案二:http://www.knowsky.com/344806.html你去看看解决方案三:html本身就是所谓statelessprotocol.说到页生命周期时一般是指ViewState.解决方案四:简单讲:ViewState-PageLevelstateSession-SessionLevelstateApplication-ApplicationLevelstate解决方案五:namhyuk

ASP.NET应用程序生命周期问题.

问题描述 看了MSDN上的.ASP.NET应用程序生命周期.有下面几个阶段1.用户从Web服务器请求应用程序资源2.ASP.NET接收对应用程序的第一个请求.3.为每个请求创建ASP.NET核心对象.4.将HttpApplication对象分配给请求5.由HttpApplication管线处理请求.那HttpModule和HttpHandler属于上面的哪个阶段啊? 解决方案 解决方案二:请求-->IIS-->ASP.NETHTTP运行期-->认证-->授权--..........