MVCのアクションフィルター[例を含むフィルターの種類]

公開: 2021-03-04

目次

ASP.NET MVC –アクションフィルター

MVC(Model-View-Controller)フィルターでは、MVC Framework要求処理とは異なる機能またはロジックに従って、追加のロジックを使用します。

MVCフィルターは、承認、ロギング、キャッシングなど、さまざまなレベルのプロセスを実装します。

アクションフィルターは、ビジネスロジックに従って変更を行うためにコントローラーアクションメソッドに実装できる属性と見なすことができます。

システムからMVCフィルターを検討できます。 属性は、クラス、メソッド、プロパティ、およびフィールドとして定義されます。

また読む: MVCプロジェクト

ASP.NET MVCフレームワークには、さまざまなアクションフィルターが組み込まれています

承認:このアクションフィルターには、特定のユーザーロールへのアクセスを制限する機能があります。

OutputCache :これはアクションフィルターであり、定義された時間内のコントローラーアクションメソッドの結果をキャッシュします。

HandleError :このコントローラーアクションが実行されると、コードが失敗した場合に特定のシナリオでエラーが処理されます。 カスタムアクションフィルターを作成できます。

たとえば、カスタム認証システムを実行するためのカスタムアクションフィルターを作成できます。

ソース

要求と応答のライフサイクルフローでパイプラインをフィルタリングします。

ソース

フィルタは、コードにロジックを実装する2つのカテゴリを提供し、異なるインターフェイス定義を実行します-

  1. 同期
  2. 非同期

同期フィルター

同期フィルターでは、パイプラインの処理の前後にコードを実行できます。 これは、 OnStageExecutingおよびOnStageExecutedアクションメソッド見なすことができます。

非同期フィルター

非同期フィルターは、次のメソッドを持つ単一のメソッドで記述されます。

  • OnActionExecuting
  • OnActionExecuted
  • OnActionExecutionAsync

以下のコードスニペットは、宣言のタイプです。

パブリッククラスTimestampFilter:IActionFilter、IAsyncActionFilter

{{

public void OnActionExecuting (ActionExecutingContext context)

{{

context.ActionDescriptor.RouteValues [“ timestamp”] = DateTime.Now.ToString();

}

public void OnActionExecuted (ActionExecutedContextコンテキスト)

{{

var ts = DateTime.Parse(context.ActionDescriptor。RouteValues [“ timestamp”])。AddHours(1).ToString();

context.HttpContext.Response.Headers [“ X-EXPIRY-TIMESTAMP”] = ts;

}

public async Task OnActionExecutionAsync (ActionExecutingContextコンテキスト、ActionExecutionDelegate next)

{{

this.OnActionExecuting(context);

var resultContext = await next();

this.OnActionExecuted(resultContext);

}

}

MVCのアクションフィルターの種類

ASP.NET MVCフレームワークは、さまざまなフィルターを維持します。

承認フィルター: IAuthorisationFilter属性を実行します。

アクションフィルター: IActionFilter属性を実行します。

結果フィルター:IResultFilter属性を実行します。

例外フィルター: IExceptionFilter属性を実行します。

承認フィルター

これはユーザーのアクセシビリティのために使用でき、コントローラーでactionメソッドを実装する前に宣言できます。

承認フィルターは、2つの組み込み属性を有効にします。例:AuthorizeとAllowAnonymous

これらは、ビジネス要件に従って、コードのカスタムロジックで使用できます。

以下のコードスニペットは、承認フィルターの例です。

[承認]

public ActionResult SecureMethod()

{{

View();を返します。

}

[AllowAnonymous]

public ActionResult NonSecureMethod()

{{

View();を返します。

}

public ActionResult SecureMethod()

{{

View();を返します。

}

アクションフィルター

アクションメソッドを実行する前とアクションメソッドの後のアクションフィルターについて説明できます。

2種類のメソッドがあります。

  1. OnActionExecuted
  2. OnActionExecuting

以下のコードスニペットは、アクションフィルターの例です。

システムを使用する;

System.Collections.Genericを使用します。

System.Linqを使用します。

System.Webを使用します。

System.Web.Mvcを使用します。

名前空間TutorialActionFilter.Filters

{{

パブリッククラスMyactionfilter:FilterAttribute、IActionFilter

{{

public void OnActionExecuted (ActionExecutedContext filterContext)

{{

if(filterContext.HttpContext.Session [“ UserID”]!= null)

{{

filterContext.Result = newRedirectResult(“ / Home / Index”);

}

そうしないと

{{

filterContext.Result = newRedirectResult(“ / Login / Login”);

}

}

public void OnActionExecuting (ActionExecutingContext filterContext)

{{

if(filterContext.HttpContext.Session [“ UserID”]!= null)

{{

filterContext.Result = newRedirectResult(“ / Home / Index”);

}

そうしないと

{{

filterContext.Result = newRedirectResult(“ / Login / Login”);

}

}

}

}

[TutorialActionFilter]

[AcceptVerbs(HttpVerbs.Get)]

public ActionResult GetPerson()

{{

人p=新しい人();

View(“ Person”、p);を返します。

}

結果フィルター

アクションメソッドを実行する前と、アクションメソッドを実行した後のアクションフィルターについて説明できます。

2種類のメソッドがあります。

  1. OnResultExecuted
  2. OnResultExecuting

以下のコードスニペットは、結果フィルターの例です。

システムを使用する;

System.Collections.Genericを使用します。

System.Linqを使用します。

System.Webを使用します。

System.Web.Mvcを使用します。

名前空間ResultFilter.Filters

{{

パブリッククラスMyResultfilter:FilterAttribute、IResultFilter

{{

public void OnResultExecuted(ResultExecutedContext filterContext)

{{

if(filterContext.HttpContext.Session [“ UserID”]!= null)

{{

filterContext.Result = newRedirectResult(“ / Home / Contact”);

}

そうしないと

{{

filterContext.Result = newRedirectResult(“ / Login / Login”);

}

}

public void OnResultExecuting (ResultExecutingContext filterContext)

{{

if(filterContext.HttpContext.Session [“ UserID”]!= null)

{{

filterContext.Result = newRedirectResult(“ / Home / Contact”);

}

そうしないと

{{

filterContext.Result = newRedirectResult(“ / Login / Login”);

}

}

}

}

[MyResultfilter]

[AcceptVerbs(HttpVerbs.Get)]

public ActionResult GetPerson()

{{

人p=newPerson();

View(“ Person”、p);を返します。

}

例外フィルター

これらは、コントローラーまたはアクションメソッドが例外をスローするときに使用できます。

この例外フィルターは、例外をキャッチするために重要です。

以下は、例外フィルターを使用するためのコードスニペットです

システムを使用する;

System.Collections.Genericを使用します。

System.Linqを使用します。

System.Webを使用します。

System.Web.Mvcを使用します。

名前空間ExceptionFilter.Filters

{{

パブリッククラスMyExceptionFilter:FilterAttribute、IExceptionFilter

{{

public void OnException (ExceptionContext filterContext)

{{

filterContext.Controller.ViewBag.onExceptionError="ExceptionFilterフィルターが呼び出されました";

filterContext.HttpContext.Response.Write( "ExceptionFilter filter called");

}

}

}

[MyExceptionFilter]

パブリッククラスHomeController:コントローラー

{{

[AcceptVerbs(HttpVerbs.Get)]

public ActionResult GetPerson()

{{

人p=newPerson();

View(“ Person”、p);を返します。

}

}

また読む: JavaMVCプロジェクト

世界のトップ大学からオンラインでソフトウェアコース学びましょう。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。

結論

この記事がMVCのアクションフィルターの理解に役立つことを願っています。

フルスタック開発の詳細に興味がある場合は、upGrad&IIIT-Bのフルスタックソフトウェア開発のエグゼクティブPGプログラムをチェックしてください。これは、働く専門家向けに設計されており、500時間以上の厳格なトレーニング、9以上のプロジェクト、および割り当て、IIIT-B卒業生のステータス、実践的な実践的なキャップストーンプロジェクト、トップ企業との仕事の支援。

プログラミングのデータ構造とは何ですか?

データ構造は、プログラム内でデータを配置する方法です。 最も重要な2つのデータ構造は、配列とリンクリストです。 配列は最もよく知られているデータ構造であり、最も理解しやすいものです。 配列は基本的に関連アイテムの番号付きリストです。 これらは理解と使用が簡単ですが、大量のデータを処理する場合はあまり効率的ではありません。 リンクリストはより複雑ですが、適切に使用すれば非常に効率的です。 大きなリストの途中でアイテムを追加または削除する必要がある場合、または大きなリストでアイテムを検索する必要がある場合に適しています。

リンクリストと配列の違いは何ですか?

配列では、要素にアクセスするためにインデックスが使用されます。 配列内の要素は順番に編成されているため、インデックスが使用されている場合は要素に簡単にアクセスして変更できます。 配列のサイズも固定されています。 要素は、作成時に割り当てられます。 リンクリストでは、要素にアクセスするためにポインタが使用されます。 リンクリストの要素は、必ずしも順番に格納されるとは限りません。 リンクリストは、作成時にノードを含む可能性があるため、サイズが不明です。 要素にアクセスするためにポインタが使用されるため、メモリの割り当てが簡単になります。

Cのポインタとは何ですか?

ポインタは、変数または関数のアドレスを格納するCのデータ型です。 通常、別のメモリ位置への参照として使用されます。 ポインタは、配列、構造、関数、またはその他のタイプのメモリアドレスを保持できます。 Cはポインターを使用して、関数に値を渡したり、関数から値を受け取ったりします。 ポインタは、メモリ空間を動的に割り当てるために使用されます。