Filtry akcji w MVC [Rodzaje filtrów z przykładami]
Opublikowany: 2021-03-04Spis 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-
- Synchroniczny
- 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.
- Po wykonaniu akcji
- 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.
- Po wykonaniu wyniku
- 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.