ActionFilterは:まず、何であるかを理解します
1:のActionFilterは、アクションの実装のプロセスに点在しているが、アクションの実装前と後の拡張機能を提供します。ActionFilterは、ページ圧縮、キャッシング、エラー処理、ログイン認証で、非常に広い使用しています。
2:のActionFilterの実装はActionFilterAttributeは抽象クラスから継承する必要があり、この方法を使用する必要性をカバーしています。
3:4つの方法があります重量クラス、すなわちOnActionExecuting、OnActionExecuted、OnResultExecuting、OnResultExecutedをActionFilterAttributeすることができます。
4:これらの4つのメソッドの実行順序であるOnActionExecuting-> OnActionExecuted-> OnResultExecuting-> OnResultExecuted
実装手順:通常クラスTestFilter内部に配置された私は、フィルタのファイルフォルダを建てフィルタクラスを置くために専用のフォルダを、構築
クラスコードは次のよう:
名前空間FirstMvcDemo.Filter { パブリック クラスTestFilter:ActionFilterAttributeは { 公共の オーバーライドが 無効OnActionExecuting(ActionExecutingContext filterContextを) { // あなたは、コントローラのようなコンテンツやViewBagのViewDataを使用する場合は、法filterContext.Controllerで使用されるパラメータ filterContext.Controller.ViewBag。 = TESTDATA 「コンテンツ1 」; filterContext.Controller.ViewData [ 「TESTDATA 」 = 「コンテンツ2 」; HttpContext.Current.Response.Write(「実行されたアクションを実行する準備がまだときに実行しない程度の時間」); } パブリック オーバーライドは 無効OnActionExecuted(ActionExecutedContext filterContext) { (HttpContext.Current.Response.Writeを" が、実行リターン結果アクションときに実行されていません" ); } 公共 オーバーライド 無効OnResultExecuting(ResultExecutingContext filterContext) { HttpContext.Current.Responseを。書き込み(「OnResultExecuting OnActionExecutedとも同じですが、前者は後者のみを実装した後に行われる」); } 公共 オーバーライド ボイドOnResultExecuted(ResultExecutedContext filterContext) { HttpContext.Current.Response.Write(「アクションリターンのActionResult実行後に実行されます」); } } }
そして、制御部に、プラス[TestFilter]フラグは、最初FilterDemoクラスに入るこの行動の実施方法の実装であります
[TestFilter] 公共のActionResultホーム() { 返すビューを(); }
もちろん、フィルタクラスは可能ではない参照がライン上で忘れてはいけない場合の位置に入れて!