2011-12-23 8 views
1

ActionResultで特定の関数を実行し、必要に応じて特定の値を返す必要があります。すべてのActionResultメソッドでいくつかのコードを実行し、必要に応じて結果を返す方法

この関数の名前はA()としましょう。

ActionResult Index() { 
    if (...) return A(); 
    ... 
} 

ActionResult About() { 
    if (...) return A(); 
} 

をそれとも私がInitialize()メソッドを使用することができます:私は手動でこれを行うことができます

override void Initialize(RequestContext r) { 
    A(); // Can't do a return here 
} 

をしかし、問題は、それは無効なので、私はActionResult値を返すことができないということです。

これを行う方法はありますか?

答えて

1

Action Filtersでこれを行うことができます。

public class MyActionFilter : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     if (...) { 
      // modify filterContext as needed 
     } 
    } 
} 

次に、コントローラおよび/またはアクション

+0

おかげに[MyActionFilter]を追加することができます。私が必要とするもののように見えます。そして、どのように特定のActionResult(例えば、RedirectToAction())を返すのですか? – Alex

+0

'filterContext.Result = new RedirectResult(url)'を使用します。より多くの例について[this](http://stackoverflow.com/a/5453371/291687)の回答を見てください。 – Lester

+0

完璧に動作します!このメソッドをコントローラー自体でオーバーライドすると、このコントローラーのすべてのアクションでコンテキスト結果が自動的に変更されます。 – Alex

関連する問題