2009-03-04 5 views
0

呼び出される前に、MVCのActionResultを返す私は私の他のコントローラが初期化中は、特定のコントローラメソッドが

public abstract class BaseController : Controller 
{ 
    protected override void Initialize(System.Web.Routing.RequestContext requestContext) 
    { 
     base.Initialize(requestContext); 
     ... 
    } 
} 

を継承しているから、ベースコントローラクラスを持っている私はいくつかのセットアップをやっている、といくつかのケースではどこがあります私は実行を短絡し、実際のActionメソッドの実行を完全にスキップしてActionResultの戻り値に直接ジャンプしたいと思います。これらの線に沿って何か

protected override void Initialize(System.Web.Routing.RequestContext requestContext) 
{ 
    base.Initialize(requestContext); 
    if(specialCase) 
    { 
     ViewData[...] = specialCaseInformation; 
     return View("~/Shared/SpecialCase.aspx"); 
    } 
} 

意図が呼ばれるように起こっていた何のActionResultメソッドスキップして、私のグローバルな特殊なケースページに置き換えることであろう。しかし、私はInitializeがこれのために意図されたとは思わない。私は私が行う必要がは、別々のActionFilterAttributeクラスを作成OnActionExecutingメソッドをオーバーライドし、specialCaseが起動した場合、するViewResultオブジェクトを作成し、filterContext.Resultプロパティに割り当てだと思う

これで正しい方向に進むのですか、これを別の方法で行うべきですか?

答えて

0

はい、ActionFilterAttributeはまさに正しい方法です。 HandleErrorAttribute.csの例を見てください。

あなたが言うように、初期化は正しい方法ではありません。

関連する問題