OnActionExecuting
で特定の条件が満たされたら、アクションメソッドの実行全体をスキップして特定のActionResult
を返すことはできますか?ActionFilterからアクションの実行をスキップする方法は?
答えて
このためにfilterContext.Resultを使用できます。
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//Check your condition here
if (true)
{
//Create your result
filterContext.Result = new EmptyResult();
}
else
base.OnActionExecuting(filterContext);
}
ダウンロードサンプルとMSDNの記事Filtering in ASP.NET MVCを参照してください。
Result
プロパティをnull以外の値に設定すると、OnActionExecuting
およびOnResultExecuting
のメソッドでフィルタの実行をキャンセルできます。
保留中の任意のOnActionExecuted
およびOnActionExecuting
フィルタは呼び出されず、キャンセルされたフィルタまたは保留中のフィルタにはOnActionExecuted
メソッドが呼び出されません。
以前に実行されたフィルタ用のOnActionExecuted
フィルタが実行されます。 OnResultExecutingand
OnResultExecuted
のフィルタがすべて実行されます。
サンプルから次のコードは、特定の条件がOnActionExecuting
に満たされたときに特定のActionResult
を返す方法を示しています。
if (filterContext.RouteData.Values.ContainsValue("Cancel"))
{
filterContext.Result = new RedirectResult("~/Home/Index");
Trace.WriteLine(" Redirecting from Simple filter to /Home/Index");
}
複数のフィルタがあり、フィルタの順序が重要な場合は、フィルタの登録時に「Order」パラメータを指定して、Rickがその結果の仕組みの概要を説明したように実行順序を制御できるようにする必要がありますfilterContext.Resultプロパティが動作します。 –
良い点ニック - しかし私のセクションを参照してください。フィルターオーダー - オーダープロパティーは、同じクラスのフィルターにのみ適用されます。認証は常に最初に実行され、例外は最後に実行されます。 – RickAndMSFT
あなたはここに次のコードを使用することができます。
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
...
if (needToRedirect) //your condition here
{
...
filterContext.Result = new RedirectToAction(string action, string controller)
return;
}
...
}
RedirectToActionは、条件に基づいて特定のアクションをリダイレクトします。
RedirectToActionは少なくとも(MVC5では)メソッドなのでnew()できません。 – rumblefx0
- 1. 別のアクションからボタンを実行する方法は?
- 2. 関数からアクション(リスナー)を実行する方法は?
- 3. UWP:BackgroundTaskでアクションを実行する方法
- 4. RedirectToAction ActionFilterから
- 5. Mavenプラグインの親POM実行をスキップする方法は?
- 6. sqlから行をスキップする方法は?
- 7. アクションからバックグラウンドでSymfonyタスクを正しく実行する方法は?
- 8. 新しいアクションで以前のアクションの実行をキャンセルする方法は?
- 9. Androidアプリの起動時に何らかのアクションを実行する方法
- 10. コンテンツタイプの作成後にアクションを実行する方法は?
- 11. JSFでアクションの実行時間を測定する方法は?
- 12. Adobe XIアクションの実行パスワード保護されたファイルをスキップ
- 13. 祖父母メソッドを実行する親メソッドの実行をスキップする方法はありますか?
- 14. if条件に基づいてspark rdd mapアクションの行をスキップする方法
- 15. rails3のjavascriptからコントローラ/アクションを実行
- 16. コマンドラインからバゲントトリガーをスキップする方法
- 17. 実行がスキップする行
- 18. TextBox.Triggers(イベントトリガ)で何らかのアクションを実行するには?
- 19. Railsでコントローラ/アクションを実行する方法は?
- 20. 還元アクションは一度だけ実行する方法は?
- 21. getline()をスキップする実行
- 22. x行のfwrite()をスキップする方法
- 23. Pythonの行をスキップする方法
- 24. 次の行をスキップする方法C++
- 25. Python実行ファイルの実行中にWindowsスマートスクリーンエラーをスキップする方法はありますか?
- 26. 実行計画から複数のブロックをスキップする
- 27. Observable RxJSからアクションを実行
- 28. BluemixのPythonアクション内からOpenWhiskアクションを実行
- 29. UIButtonの3Dタッチでアクションを実行する最良の方法
- 30. iOS Swift 3アニメーションの実行後にアクションを実行する方法
条件がtrueのときにbase.OnActionExecutingをスキップする理由は何ですか?私の場合、結果を設定する前に実行する必要があります。 – xr280xr