6
我構建了自己的Controller類,它繼承自BaseController
。但構造函數中的ControllerContext
是「null」。我應該在哪裏指定ControllerContext
?從我的自定義控制器繼承自BaseController中的NULL ControllerContext
我構建了自己的Controller類,它繼承自BaseController
。但構造函數中的ControllerContext
是「null」。我應該在哪裏指定ControllerContext
?從我的自定義控制器繼承自BaseController中的NULL ControllerContext
ControllerContext
屬性未分配給繼承層次中的任何基礎構造函數。一個控制器由一個控制器工廠創建並傳回,但沒有分配ControllerContext
屬性。
使用反射器,我們可以看看那裏的分配發生:
protected virtual void Initialize(RequestContext requestContext)
{
this.ControllerContext = new ControllerContext(requestContext, this);
}
的Initialize
方法是從虛擬Execute方法調用來調用:
protected virtual void Execute(RequestContext requestContext)
{
if (requestContext == null)
{
throw new ArgumentNullException("requestContext");
}
this.VerifyExecuteCalledOnce();
this.Initialize(requestContext);
this.ExecuteCore();
}
這是指在最早點您可以通過覆蓋Execute
或Initialize
方法(但首先撥打base.Execute
或base.Initialize
)訪問ControllerContext
屬性:
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.
}
後者(Initialize
)是指您可以使用ControllerContext屬性,除非你處理不推薦分配自己,(作爲框架的部分將取決於具有該特性的絕對最早時間當時分配給)。
希望有所幫助。
謝謝。這就是我需要的。 – 2010-07-13 13:58:14