我构建了自己的继承自的Controller类BaseController
.但是 ControllerContext
构造函数是"null".我应该在哪里指定ControllerContext
?
Mat*_*ott 22
该ControllerContext
属性未分配给继承层次结构中的任何基础构造函数.控制器由控制器工厂创建,并在ControllerContext
没有分配属性的情况下传回.
使用Reflector,我们可以查看赋值发生的位置:
protected virtual void Initialize(RequestContext requestContext)
{
this.ControllerContext = new ControllerContext(requestContext, this);
}
Run Code Online (Sandbox Code Playgroud)
该Initialize
方法是从虚拟Execute方法调用来调用:
protected virtual void Execute(RequestContext requestContext)
{
if (requestContext == null)
{
throw new ArgumentNullException("requestContext");
}
this.VerifyExecuteCalledOnce();
this.Initialize(requestContext);
this.ExecuteCore();
}
Run Code Online (Sandbox Code Playgroud)
这意味着您可以访问该ControllerContext
属性的最早点是覆盖Execute
或Initialize
方法(但是调用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.
}
Run Code Online (Sandbox Code Playgroud)
后者(Initialize
)是您可以使用ControllerContext属性的绝对最早的点,除非您自己处理了赋值,这是不推荐的(因为框架的某些部分将取决于当时分配给该属性).
希望有所帮助.
归档时间: |
|
查看次数: |
6198 次 |
最近记录: |