Filtry akcji w MVC [Rodzaje filtrów z przykładami]

Opublikowany: 2021-03-04

Spis treści

ASP.NET MVC – Filtry akcji

W filtrach MVC (Model-View-Controller) używamy dodatkowej logiki zgodnie z różnymi funkcjonalnościami lub logiką przetwarzania żądań MVC Framework.

Filtry MVC implementują proces na różnych poziomach: na przykład autoryzacja, rejestrowanie i buforowanie.

Możemy rozważyć filtr akcji jako atrybut, który możemy zaimplementować do metody akcji kontrolera, aby dokonać modyfikacji zgodnie z logiką biznesową.

Możemy rozważyć filtry MVC z systemu. Atrybut jest zdefiniowany jako klasa, metoda, właściwości i pola.

Przeczytaj także: Projekt MVC

Platforma ASP.NET MVC zawiera różne filtry akcji

Autoryzuj : ten filtr akcji umożliwia ograniczenie dostępu do określonej roli użytkownika.

OutputCache : jest to filtr akcji i buforuje wynik metody akcji kontrolera w określonym czasie.

HandleError : po wykonaniu tej akcji kontrolera obsługuje błędy w określonym scenariuszu, jeśli kod nie powiedzie się. Pozwala na stworzenie własnego filtra akcji.

Na przykład możemy utworzyć niestandardowy filtr akcji, aby wykonać niestandardowy system uwierzytelniania.

Źródło

Filtruj potok w cyklu życia żądania i odpowiedzi:

Źródło

Filtr udostępnia dwie kategorie implementacji logiki w kodzie, wykonuje różne definicje interfejsu-

  1. Synchroniczny
  2. Asynchroniczny

Filtry synchroniczne

W filtrze synchronizacji możemy uruchomić kod przed i po potoku podczas jego przetwarzania; możemy uznać to za metody akcji OnStageExecuting i OnStageExecuted .

Filtry asynchroniczne

Filtry asynchroniczne są opisane jedną metodą, która ma metody

  • Podczas wykonywania akcji
  • Po wykonaniu akcji
  • OnActionExecutionAsync

Poniższe fragmenty kodu to typ deklaracji

klasa publiczna TimestampFilter : IActionFilter, IAsyncActionFilter

{

public void OnActionExecuting (kontekst ActionExecutingContext)

{

context.ActionDescriptor.RouteValues[„znacznik czasu”] = DateTime.Now.ToString();

}

public void OnActionExecuted (kontekst ActionExecutedContext)

{

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

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

}

publiczne zadanie asynchroniczne OnActionExecutionAsync (kontekst ActionExecutingContext, następnie ActionExecutionDelegate)

{

this.OnActionExecuting(kontekst);

var resultContext = czekaj na następne();

this.OnActionExecuted(resultContext);

}

}

Rodzaje filtrów akcji w MVC

Platforma ASP.NET MVC obsługuje różne filtry:

Filtry autoryzacji: wykonuje atrybut IAuthorisationFilter.

Filtry akcji: wykonuje atrybut IActionFilter.

Filtry wyników : wykonaj atrybut IResultFilter.

Filtry wyjątków: wykonuje atrybut IExceptionFilter.

Filtry autoryzacji

Możemy go wykorzystać dla dostępności użytkownika, a także zadeklarować przed implementacją metody akcji w kontrolerze.

Filtr autoryzacji włącza dwa wbudowane atrybuty, na przykład: Authorize i AllowAnonymous

Możemy ich użyć w niestandardowej logice w kodzie zgodnie z naszymi wymaganiami biznesowymi.

Poniższy fragment kodu jest przykładem filtrów autoryzacji

[Autoryzować]

public ActionResult SecureMethod()

{

zwróć Widok();

}

[Zezwól na anonimowość]

public ActionResult NonSecureMethod()

{

zwróć Widok();

}

public ActionResult SecureMethod()

{

zwróć Widok();

}

Filtry akcji

Filtry Action możemy opisać przed wykonaniem metody Action i po niej.

Posiada dwa rodzaje metod.

  1. Po wykonaniu akcji
  2. Podczas wykonywania akcji

Poniższy fragment kodu jest przykładem filtrów akcji

korzystanie z Systemu;

za pomocą System.Collections.Generic;

za pomocą System.Linq;

za pomocą System.Web;

za pomocą System.Web.Mvc;

Przestrzeń nazw TutorialActionFilter.Filters

{

public class Myactionfilter : FilterAttribute,IActionFilter

{

public void OnActionExecuted (ActionExecutedContext filterContext)

{

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

{

filterContext.Result = newRedirectResult("/Home/Index");

}

w przeciwnym razie

{

filterContext.Result = newRedirectResult("/Login /Login");

}

}

public void OnActionExecuting (ActionExecutingContext filterContext)

{

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

{

filterContext.Result = newRedirectResult("/Home/Indeks");

}

w przeciwnym razie

{

filterContext.Result = newRedirectResult("/Login /Login");

}

}

}

}

[Filtr akcji samouczka]

[Zaakceptuj czasowniki(HttpVerbs.Get)]

public ActionReult GetPerson()

{

Osoba p = nowa Osoba ();

return Widok(„Osoba”,p);

}

Filtry wyników

Filtry akcji możemy opisać przed wykonaniem Metody akcji i po wykonaniu Metody akcji.

Posiada dwa rodzaje metod.

  1. Po wykonaniu wyniku
  2. Podczas wykonywania wyniku

Poniższy fragment kodu jest przykładem filtrów wyników

korzystanie z Systemu;

za pomocą System.Collections.Generic;

za pomocą System.Linq;

za pomocą System.Web;

za pomocą System.Web.Mvc;

Przestrzeń nazw ResultFilter.Filters

{

public class MyResultfilter : FilterAttribute,IResultFilter

{

public void OnResultExecuted(ResultExecutedContext filterContext)

{

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

{

filterContext.Result = newRedirectResult("/Home/Kontakt");

}

w przeciwnym razie

{

filterContext.Result = newRedirectResult("/Login/Login");

}

}

public void OnResultExecuting (ResultExecutingContext filterContext)

{

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

{

filterContext.Result = newRedirectResult("/Home/Kontakt");

}

w przeciwnym razie

{

filterContext.Result = newRedirectResult("/Login/Login");

}

}

}

}

[Mój filtr wyników]

[Zaakceptuj czasowniki(HttpVerbs.Get)]

public ActionReult GetPerson()

{

Osoba p = nowa Osoba ();

return Widok(„Osoba”,p);

}

Filtry wyjątków

Możemy ich użyć, gdy kontroler lub metoda akcji zgłasza wyjątek.

Ten filtr wyjątków jest ważny do przechwycenia wyjątku.

Poniżej znajduje się fragment kodu do użycia filtrów wyjątków

korzystanie z Systemu;

za pomocą System.Collections.Generic;

za pomocą System.Linq;

za pomocą System.Web;

za pomocą System.Web.Mvc;

przestrzeń nazw ExceptionFilter.Filters

{

public class MyExceptionFilter : FilterAttribute, IExceptionFilter

{

public void OnException (ExceptionContext filterContext)

{

filterContext.Controller.ViewBag.onExceptionError = „Wywołano filtr ExceptionFilter”;

filterContext.HttpContext.Response.Write("Wywołano filtr ExceptionFilter");

}

}

}

[Mój filtr wyjątków]

Klasa publiczna HomeController: Kontroler

{

[Zaakceptuj czasowniki(HttpVerbs.Get)]

public ActionReult GetPerson()

{

Osoba p = nowa Osoba ();

return Widok(„Osoba”,p);

}

}

Przeczytaj także: Projekt Java MVC

Ucz się kursów oprogramowania online z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.

Wniosek

Mamy nadzieję, że ten artykuł pomógł Ci w zrozumieniu filtrów akcji w MVC.

Jeśli chcesz dowiedzieć się więcej o tworzeniu pełnego stosu, sprawdź program Executive PG UpGrad i IIIT-B w zakresie tworzenia pełnego stosu oprogramowania, który jest przeznaczony dla pracujących profesjonalistów i oferuje ponad 500 godzin rygorystycznych szkoleń, ponad 9 projektów i zadania, status absolwentów IIIT-B, praktyczne praktyczne projekty zwieńczenia i pomoc w pracy z najlepszymi firmami.

Jakie są struktury danych w programowaniu?

Struktury danych to sposób, w jaki organizujemy dane w programie. Dwie najważniejsze struktury danych to tablice i listy połączone. Tablice to najbardziej znana i najłatwiejsza do zrozumienia struktura danych. Tablice to w zasadzie ponumerowane listy powiązanych elementów. Są łatwe do zrozumienia i użycia, ale nie są zbyt wydajne podczas pracy z dużymi ilościami danych. Listy połączone są bardziej złożone, ale mogą być bardzo wydajne, jeśli są odpowiednio używane. Są dobrym wyborem, gdy będziesz musiał dodać lub usunąć elementy w środku dużej listy lub gdy musisz wyszukać elementy na dużej liście.

Jakie są różnice między listą połączoną a tablicami?

W tablicach indeks jest używany do uzyskania dostępu do elementu. Elementy w tablicy są zorganizowane w kolejności sekwencyjnej, co ułatwia dostęp do elementów i ich modyfikowanie, jeśli używany jest indeks. Tablica ma również stały rozmiar. Elementy są przydzielane w momencie ich powstania. W połączonej liście wskaźnik służy do dostępu do elementu. Elementy połączonej listy niekoniecznie są przechowywane w kolejności sekwencyjnej. Połączona lista ma nieznany rozmiar, ponieważ może zawierać węzły w momencie jej tworzenia. Wskaźnik służy do dostępu do elementu, dzięki czemu alokacja pamięci jest łatwiejsza.

Czym jest wskaźnik w C?

Wskaźnik to typ danych w C, który przechowuje adres dowolnej zmiennej lub funkcji. Jest zwykle używany jako odniesienie do innej lokalizacji w pamięci. Wskaźnik może przechowywać adres pamięci tablicy, struktury, funkcji lub dowolnego innego typu. C używa wskaźników do przekazywania wartości i odbierania wartości z funkcji. Wskaźniki służą do dynamicznego przydzielania miejsca w pamięci.