この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 21438|答える: 3

[ASP.NET] mvc custom filter ActionFilterAttribute class

[リンクをコピー]
掲載地 2016/01/06 15:32:33 | | |

もし先に紹介したフィルターが要件を満たしていない場合、このカスタムフィルターは、動作メソッドの実行前後に自分で処理ロジックを定義したい場合に役立ちます。 フィルターをカスタマイズするには、ActionFilterAttributeクラスを継承します。これはIActionFilterとIResultFilterのインターフェースを実装する抽象クラスで、主に4つの仮想メソッドを書き換え、動作メソッドの実行と返還の前後に注入ロジックを実現する仕組みです

方式
パラメーター
形容
OnActionExecuting
ActionExecutingContext
動作メソッドが実行される前に実行してください
OnActionExecuted(実行された行動)です
ActionExecutedContext
振る舞いメソッドが実行された後に実行
OnResultExecuting
結果実行コンテキスト
振る舞いメソッドが戻る前に実行してください
OnResultExecuted
結果実行コンテキスト
行動メソッドが返された後に実行

4つのメソッドは、OnActionExecuting>OnActionExecuted>OnResultExecuting>OnResultExecutedの順番で実行されます。 上記の4つのメソッドの引数はContollorContextクラスから継承されています。 例えば、以下にカスタムフィルターが定義されています


  1. public class MyCustomerFilterAttribute : ActionFilterAttribute
  2.     {
  3.         public string Message { get; set; }

  4.         public override void OnActionExecuted(ActionExecutedContext filterContext)
  5.         {
  6.             base.OnActionExecuted(filterContext);
  7.             filterContext.HttpContext.Response.Write(string.Format( "<br/> {0} Action finish Execute.....",Message));
  8.         }

  9.         public override void OnActionExecuting(ActionExecutingContext filterContext)
  10.         {
  11.             CheckMessage(filterContext);
  12.             filterContext.HttpContext.Response.Write(string.Format("<br/> {0} Action start Execute.....", Message));
  13.             base.OnActionExecuting(filterContext);
  14.         }

  15.         public override void OnResultExecuted(ResultExecutedContext filterContext)
  16.         {
  17.             filterContext.HttpContext.Response.Write(string.Format("<br/> {0} Action finish Result.....", Message));
  18.             base.OnResultExecuted(filterContext);
  19.         }

  20.         public override void OnResultExecuting(ResultExecutingContext filterContext)
  21.         {
  22.             filterContext.HttpContext.Response.Write(string.Format("<br/> {0} Action start Execute.....", Message));
  23.             base.OnResultExecuting(filterContext);
  24.         }

  25.         private void CheckMessage(ActionExecutingContext filterContext)
  26.         {
  27.             if(string.IsNullOrEmpty( Message)||string.IsNullOrWhiteSpace(Message))
  28.                 Message = filterContext.Controller.GetType().Name + "'s " + filterContext.ActionDescrip{过滤}tor.ActionName;
  29.         }
  30.     }
コードをコピーします

その使用方法の行動方法は以下に定義されています

  1. [MyCustomerFilter]
  2.         public ActionResult CustomerFilterTest()
  3.         {
  4.             Response.Write("<br/>Invking CustomerFilterTest Action");
  5.             return View();
  6.         }
コードをコピーします







先の:有名なホスティングサービスプロバイダーであるLinodeはハッキングの疑いがあり、ユーザーはできるだけ早くパスワードを変更する必要があります
次に:Memcacheはリストされているすべての主要なメソッドを対象としています
 地主| 掲載地 2016/10/25 10:00:36 |
 地主| 掲載地 2019/08/10 22:16:41 |
.NET MVCフィルターの実行順序:

IAuthorizationFilter(OnAuthorization)----->IActionFilter(OnActionExecuting)---->

Controller Action()---->IActionFilter(OnActionExecuted) ---->IResultFilter(OnResultExecuting) ---->

view()---->IResultFilter(OnResultExecuted)

さらに、同じフィルターの実行順序:上から下へ、近接原理:




Filter2=>Filter1
掲載地 2019/08/26 13:24:19 |
マーク、博識
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com