Action的执行()
在ControllerActionInvoker的InvokeAction方法中我们直接将传入的Action名称作为方法名从Controller类型中得到表示Action操作的MethodInfo对象然后遍历MethodInfo的参数列表对于每一个ParameterInfo对象我们将它的Name和ParameterType属性表示的参数名称和类型连同创建的ControllerContext作为参数调用ModelBinder的BindModel方法并得到对应的参数值最后通过反射的方式传入参数列表并执行MethodInfo
和真正的ASPNET MVC一样定义在Controller的Action方法返回一个ActionResult对象我们通过执行它的Execute方法实现对请求的响应
ActionResult
我们为具体的ActionResult定义了一个ActionResult抽象基类如下面的代码片段所示该抽象类具有一个参数类型为ControllerContext的抽象方法ExecuteResult我们最终对请求的响应就实现在该方法中
public abstract class ActionResult
{
public abstract void ExecuteResult(ControllerContext context)
}
在之前创建的例子中Action方法返回的是一个类型为RawContentResult的对象顾名思义RawContentResult将初始化时指定的内容(字符串)原封不动地写入针对当前请求的HTTP响应消息中具体的实现如下所示
public class RawContentResult: ActionResult
{
public string RawData { get; private set; }
publicRawContentResult(string rawData)
{
RawData = rawData;
}
public override void ExecuteResult(ControllerContext context)
{
contextRequestContextHttpContextResponseWrite(thisRawData)
}
}
返回目录ASPNET MVC 框架揭秘
编辑推荐
ASP NET开发培训视频教程
Microsoft NET框架程序设计视频教程
Java程序性能优化让你的Java程序更快更稳定
Visual C++音频/视频技术开发与实战