知识大全 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.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)小编为大家搜集整理后发布的内容,让我们赶快一起来看