这个
ControllerContext
控制器上下文
使用Reflector,我们可以查看任务发生的位置:
protected virtual void Initialize(RequestContext requestContext)
{
this.ControllerContext = new ControllerContext(requestContext, this);
}
这个
Initialize
方法从虚拟执行方法调用调用:
protected virtual void Execute(RequestContext requestContext)
{
if (requestContext == null)
{
throw new ArgumentNullException("requestContext");
}
this.VerifyExecuteCalledOnce();
this.Initialize(requestContext);
this.ExecuteCore();
}
这意味着您可以访问
属性是通过重写
Execute
或
方法(但调用
base.Execute
或
base.Initialize
首先):
protected override void Execute(RequestContext requestContext)
{
base.Execute(requestContext);
// .ControllerContext is available from this point forward.
}
protected override void Initialize(RequestContext requestContext)
{
base.Initialize(requestContext);
// .ControllerContext is available from this point forward.
}
初始化
)是您可以使用ControllerContext属性的最早时间点,除非您自己处理分配,这是不推荐的(因为框架的一部分将取决于当时是否分配了该属性)。
希望有帮助。