知识大全 ASP.NET MVC 4框架揭秘:Controller(1)

Posted

篇首语:厌伴老儒烹瓠叶,强随举子踏槐花。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET MVC 4框架揭秘:Controller(1)相关的知识,希望对你有一定的参考价值。

ASP.NET MVC 4框架揭秘:Controller(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

     Controller( )

  我们知道作为Controller的类型直接或者间接实现了System Web Mvc IController接口 如下面的代码片段所示 IController接口仅仅包含一个参数类型为RequestContext的Execute方法 当一个Controller对象被激活之后 其核心的操作就是 从包含在当前请求上下文的路由数据中获取Action名称并据此解析出对应的方法 将通过Model绑定机制从当前请求上下文中提取相应的数据并调用Action方法生成对应的参数列表 所有这些后续操作都是间接地通过调用Controller的Execute方法来完成的

  public interface IController

  

  void Execute(RequestContext requestContext)

  

  定义在IController接口中的Execute是以同步的方式执行的 为了支持以异步方式对请求的处理 IController接口的异步版本System Web Mvc IAsyncController被定义出来 如下面的代码片段所示 实现了IAsyncController接口Controller的执行通过BeginExecute/EndExecute方法以异步的形式完成

  public interface IAsyncController : IController

  

  IAsyncResult BeginExecute(RequestContext requestContext

  AsyncCallback callback object state)

  void EndExecute(IAsyncResult asyncResult)

  

  抽象类System Web Mvc ControllerBase实现了IController接口 如下面的代码片段所示 ControllerBase以 显式接口实现 的方式定义了Execute方法 该方法在内部直接调用受保护的Execute虚方法 而后者最终会调用抽象方法ExecuteCore方法

  public abstract class ControllerBase : IController

  

  //其他成员

  protected virtual void Execute(RequestContext requestContext)

  protected abstract void ExecuteCore()

  void IController Execute(RequestContext requestContext)

  public ControllerContext        ControllerContext get; set;

  public TempDataDictionary       TempData get; set;

  public object               ViewBag [return: Dynamic] get;

  public ViewDataDictionary       ViewData get; set;

  

  ControllerBase具有如下几个重要的属性 TempData ViewBag和ViewData 它们用于存储从Controller向View传递的数据或者变量 其中TempData和ViewData具有基于字典的数据结构 Key和Value分别表示变量的名称和值 两者的不同之处在于前者仅仅用于存储临时数据 并且设置的变量被第一次读取之后会被移除 换句话说通过TempData设置的变量只能被读取一次 ViewBag和ViewData共享着相同的数据 它们之间的不同之处在于前者是一个动态对象 我们可以为其指定任意属性(动态属性名将作为数据字典的Key)

  在ASP NET MVC中我们会陆续遇到一系列的上下文(Context)对象 之前已经对表示请求上下文的RequestContext(HttpContext + RouteData)进行了详细的介绍 现在来介绍另一个具有如下定义的上下文类型System Web Mvc ControllerContext

  public class ControllerContext

  

  //其他成员

  public ControllerContext()

  public ControllerContext(RequestContext requestContext

  ControllerBase controller)

  public ControllerContext(HttpContextBase Context

  RouteData routeData ControllerBase controller)

  public virtual ControllerBase       Controller get; set;

  public  RequestContext          RequestContext get; set;

  public virtual HttpContextBase  HttpContext get; set;

  public virtual RouteData            RouteData get; set;

  

  顾名思义 ControllerContext就是基于某个Controller对象的上下文 从如上的代码可以看出一个ControllerContext对象实际上是对一个Controller对象和RequestContext的封装 这两个对象分别对应着ControllerContext中的同名属性 可以在构建ControllerContext的时候为调用的构造函数指定相应的参数来初始化它们

  通过HttpContext和RouteData属性返回的HttpContextBase和RouteData对象在默认情况下实际上就是RequestContext的核心组成部分 当ControllerBase的Execute方法被执行的时候 它会根据传入的ReuqestContext创建ControllerContext对象 后续的操作可以看成是在该上下文中进行

       返回目录 ASP NET MVC 框架揭秘

       编辑推荐

       ASP NET开发培训视频教程

       Microsoft NET框架程序设计视频教程

       Java程序性能优化 让你的Java程序更快 更稳定

cha138/Article/program/net/201311/16100

相关参考

知识大全 ASP.NET MVC 4框架揭秘:总体设计

ASP.NETMVC4框架揭秘:总体设计  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  第章&n

知识大全 ASP.NET MVC 4框架揭秘:ControllerFactory[2]

ASP.NETMVC4框架揭秘:ControllerFactory[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们

知识大全 ASP.NET MVC 4框架揭秘:ControllerFactory[1]

ASP.NETMVC4框架揭秘:ControllerFactory[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们

知识大全 ASP.NET MVC 4框架揭秘:Controller(3)

ASP.NETMVC4框架揭秘:Controller(3)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 ASP.NET MVC 4框架揭秘:Controller(2)[2]

ASP.NETMVC4框架揭秘:Controller(2)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 ASP.NET MVC 4框架揭秘:Controller(2)[1]

ASP.NETMVC4框架揭秘:Controller(2)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 ASP.NET MVC 4框架揭秘:CBuilder(1)[1]

ASP.NETMVC4框架揭秘:CBuilder(1)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 ASP.NET MVC 4框架揭秘:CBuilder(1)[2]

ASP.NETMVC4框架揭秘:CBuilder(1)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 ASP.NET MVC 4框架揭秘:CBuilder(2)[2]

ASP.NETMVC4框架揭秘:CBuilder(2)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看