2017-03-08 5 views
0

私のC#MVCコントローラでは、要求のプロセスが必要なオブジェクトをセットアップする必要があります。そのオブジェクトがセットアップに失敗した場合、私は別のリンクにユーザーをリダイレクトする必要があります。共通の要求処理を同じコントローラ内の異なるルートにカプセル化する方法

私のコントローラのすべてのルートでこれを行う必要がありますが、コピー&ペーストコードなしでどうすればいいですか?

私はこの

をコピーして貼り付けることはできませんどのように知っていただきたいと思い
public async Task<ActionResult> Route1() 
{ 
    var setupObject = InitSetup(); 
    if (setupObject == null) 
     return Redirect(); 

    if (some check fail) 
     return Redirect(); 

    //process Route1 request which needs setupObject not null; 
    return Ok(); 
} 

public async Task<ActionResult> Route2() 
{ 
    var setupObject = InitSetup(); 
    if (setupObject == null) 
     return Redirect(); 

    if (some check fail) 
     return Redirect(); 

    //process Route2 request which needs setupObject not null; 
    return Ok(); 
} 

var setupObject = InitSetup(); 
    if (setupObject == null) 
     return Redirect(); 

    if (some check fail) 
     return Redirect(); 
+0

は、カスタム 'FilterAttribute'を作成し、コントローラに(またはアクションに適用しますコントローラ内のメソッド) –

答えて

2

あなたが前にあなたのコントローラ内のすべてのアクションを実行するには、いくつかのコードを実行したいなら、あなたはでOnActionExecutingメソッドをオーバーライドすることができますお使いのコントローラや、あなたのベースコントローラに(何かを持っている場合)

https://msdn.microsoft.com/en-us/library/system.web.mvc.controller.onactionexecuting(v=vs.118).aspx

関連する問題