BaseController
すべてのコントローラーが継承するクラスがあります。ExecuteCore
これには、 (ほぼ)すべてのコントローラーとそのアクションに必要な初期設定を行うオーバーライドされたメソッドがあります。
protected override void ExecuteCore()
{
SetUpMethod1();
SetUpMethod2();
base.ExecuteCore();
}
protected virtual void SetUpMethod1()
{
//some initialization stuff
}
protected virtual void SetUpMethod2()
{
//some other initialization stuff
}
一部のコントローラーが異なる動作を必要とする場合、コントローラーの関連するメソッドをオーバーライドするのは簡単であり、それはうまく機能します。ただし、セットアップメソッドで多少異なる動作を必要とするさまざまなコントローラーからのアクションがいくつかあります。
私は思いついた
protected virtual void SetUpMethod1()
{
string controller = (string)ControllerContext.RouteData.Values["controller"]);
string action = (string)ControllerContext.RouteData.Values["action"]);
if (controller/account combination is in a list)
//special setup
else
//regular setup
}
何か悪いことをしているという気持ちを揺さぶることはできません。この動作を取得するためのより良い/正しい方法はありますか?