MVC'de Eylem Filtreleri [Örneklerle Filtre Türleri]

Yayınlanan: 2021-03-04

İçindekiler

ASP.NET MVC – Eylem Filtreleri

MVC (Model-View-Controller) filtrelerinde, MVC Framework istek işlemeden farklı işlevlere veya mantıklara göre ek mantığı kullanırız.

MVC filtreleri, farklı düzeyler için bir süreç uygular: örneğin, yetkilendirme, günlüğe kaydetme ve önbelleğe alma.

Eylem filtresini, değişikliği iş mantığına göre yapmak için bir denetleyici eylem yöntemine uygulayabileceğimiz bir nitelik olarak düşünebiliriz.

Sistemden MVC filtrelerini düşünebiliriz. Nitelik, sınıf, yöntem, özellikler ve alanlar olarak tanımlanır.

Ayrıca Okuyun: MVC Projesi

ASP.NET MVC Çerçevesi, Çeşitli Eylem Filtrelerini Birleştirir

Yetkilendir : Bu eylem filtresi, belirli bir kullanıcı rolüne erişimi kısıtlama yeteneğine sahiptir.

OutputCache : Eylem filtresidir ve bir denetleyici eylem yönteminin sonucunu tanımlanan süre içinde önbelleğe alır.

HandleError : Bu denetleyici eylemi yürütüldüğünde, kodun başarısız olması durumunda belirli bir senaryodaki hataları işler. Özel eylem filtrenizi oluşturmanıza olanak tanır.

Örneğin, özel bir kimlik doğrulama sistemini yürütmek için özel bir eylem filtresi oluşturabiliriz.

Kaynak

İstek ve yanıt yaşam döngüsü akışındaki boru hattını filtreleyin:

Kaynak

Filtre, mantığın kodda uygulanması için iki kategori sağlar, farklı arayüz tanımları gerçekleştirir-

  1. Senkron
  2. asenkron

Senkron Filtreler

Senkronizasyon filtresinde, işlendiğinde kodu ardışık düzenden önce ve sonra çalıştırabiliriz; OnStageExecuting ve OnStageExecuted eylem yöntemleri olarak düşünebiliriz .

Asenkron Filtreler

Asenkron filtreler tek bir metodla anlatılmıştır.

  • OnActionExecuting
  • OnActionExecuted
  • OnActionExecutionAsync

Aşağıdaki kod parçacıkları bildirim türüdür

genel sınıf TimestampFilter : IActionFilter, IAsyncActionFilter

{

public void OnActionExecuting (ActionExecutingContext bağlamı)

{

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

}

public void OnActionExecuted (ActionExecutedContext bağlamı)

{

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

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

}

genel zaman uyumsuz Görev OnActionExecutionAsync (ActionExecutingContext bağlamı, sonraki ActionExecutionDelegate)

{

this.OnActionExecuting(bağlam);

var resultContext = next();

this.OnActionExecuted(resultContext);

}

}

MVC'deki Eylem Filtresi Türleri

ASP.NET MVC çerçevesi çeşitli filtreleri korur:

Yetkilendirme filtreleri: IAuthorisationFilter özniteliğini yürütür.

Eylem filtreleri: IActionFilter özniteliğini gerçekleştirir.

Sonuç filtreleri : IResultFilter özniteliğini yürütün.

İstisna filtreleri: IExceptionFilter özniteliğini yürütür.

Yetkilendirme Filtreleri

Kullanıcının erişilebilirliği için kullanabiliriz ve eylem yönteminin controller'da uygulanmasından önce bildirebiliriz.

Yetkilendirme Filtresi, iki yerleşik özniteliği etkinleştirir, örneğin: Authorize ve AllowAnonymous

Bunları iş gereksinimlerimize göre kodda özel mantıkta kullanabiliriz.

Aşağıdaki kod parçacığı, Yetkilendirme filtrelerinin örneğidir

[Yetki vermek]

public ActionResult SecureMethod()

{

Görünümü döndür();

}

[İzin verAnonim]

public ActionResult NonSecureMethod()

{

Görünümü döndür();

}

public ActionResult SecureMethod()

{

Görünümü döndür();

}

Eylem Filtreleri

Eylem Yöntemini gerçekleştirmeden önce ve eylem yönteminden sonra Eylem filtrelerini tanımlayabiliriz.

İki tür yöntemi barındırır.

  1. OnActionExecuted
  2. OnActionExecuting

Aşağıdaki kod parçacığı, Eylem Filtreleri örneğidir

Sistemi kullanarak;

System.Collections.Generic kullanarak;

System.Linq kullanarak;

System.Web'i kullanarak;

System.Web.Mvc kullanarak;

ad alanı EğitimiActionFilter.Filters

{

public class Myactionfilter : FilterAttribute,IActionFilter

{

public void OnActionExecuted (ActionExecutedContext filterContext)

{

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

{

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

}

Başka

{

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

}

}

public void OnActionExecuting (ActionExecutingContext filterContext)

{

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

{

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

}

Başka

{

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

}

}

}

}

[Eğitim Eylem Filtresi]

[AcceptVerbs(HttpVerbs.Get)]

public ActionResult GetPerson()

{

Kişi p = yeni Kişi ();

dönüş Görünümü(“Kişi”,s);

}

Sonuç Filtreleri

Eylem Yöntemini gerçekleştirmeden önce ve Eylem Yöntemi gerçekleştirildikten sonra Eylem filtrelerini tanımlayabiliriz.

İki tür yöntemi barındırır.

  1. OnResultExecuted
  2. OnResultExecuting

Aşağıdaki kod parçacığı, Sonuç Filtreleri örneğidir

Sistemi kullanarak;

System.Collections.Generic kullanarak;

System.Linq kullanarak;

System.Web'i kullanarak;

System.Web.Mvc kullanarak;

ad alanı ResultFilter.Filters

{

genel sınıf MyResultfilter : FilterAttribute,IResultFilter

{

public void OnResultExecuted(ResultExecutedContext filterContext)

{

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

{

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

}

Başka

{

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

}

}

public void OnResultExecuting (ResultExecutingContext filterContext)

{

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

{

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

}

Başka

{

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

}

}

}

}

[Sonuç filtresi]

[AcceptVerbs(HttpVerbs.Get)]

public ActionResult GetPerson()

{

Kişi p = yeniKişi ();

dönüş Görünümü(“Kişi”,s);

}

İstisna Filtreleri

Bunları, bir denetleyici veya eylem yöntemi istisna oluşturduğunda kullanabiliriz.

Bu istisna filtresi, istisnayı yakalamak için önemlidir.

İstisna filtrelerini kullanmak için kod parçacığı aşağıdadır

Sistemi kullanarak;

System.Collections.Generic kullanarak;

System.Linq kullanarak;

System.Web'i kullanarak;

System.Web.Mvc kullanarak;

ad alanı ExceptionFilter.Filters

{

genel sınıf MyExceptionFilter : FilterAttribute, IExceptionFilter

{

public void OnException (ExceptionContext filterContext)

{

filterContext.Controller.ViewBag.onExceptionError = “ExceptionFilter filtresi çağrıldı”;

filterContext.HttpContext.Response.Write(“ExceptionFilter filtresi çağrıldı”);

}

}

}

[MyExceptionFiltre]

public class HomeController : Controller

{

[AcceptVerbs(HttpVerbs.Get)]

public ActionResult GetPerson()

{

Kişi p = yeniKişi ();

dönüş Görünümü(“Kişi”,s);

}

}

Ayrıca Okuyun: Java MVC Projesi

Dünyanın En İyi Üniversitelerinden Online Yazılım Kursları Öğrenin . Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.

Çözüm

Bu makalenin MVC'deki Eylem filtrelerini anlamanıza yardımcı olduğunu umuyoruz.

Tam yığın geliştirme hakkında daha fazla bilgi edinmek istiyorsanız, upGrad & IIIT-B'nin çalışan profesyoneller için tasarlanmış ve 500+ saatlik zorlu eğitim, 9+ proje ve atamalar, IIIT-B Mezun statüsü, pratik uygulamalı bitirme projeleri ve en iyi firmalarla iş yardımı.

Programlamada veri yapıları nelerdir?

Veri yapıları, bir programdaki verileri düzenleme şeklimizdir. En önemli iki veri yapısı diziler ve bağlantılı listelerdir. Diziler en tanıdık veri yapısıdır ve anlaşılması en kolay olanıdır. Diziler temel olarak ilgili öğelerin numaralandırılmış listeleridir. Anlamaları ve kullanmaları kolaydır, ancak büyük miktarda veriyle çalışırken çok verimli değildirler. Bağlantılı listeler daha karmaşıktır, ancak doğru kullanıldığında çok verimli olabilirler. Büyük bir listenin ortasındaki öğeleri eklemeniz veya çıkarmanız gerektiğinde veya geniş bir listedeki öğeleri aramanız gerektiğinde iyi seçimlerdir.

Bağlantılı liste ve diziler arasındaki farklar nelerdir?

Dizilerde, bir öğeye erişmek için bir dizin kullanılır. Dizideki öğeler sıralı düzende düzenlenir; bu, bir dizin kullanılıyorsa öğelere erişmeyi ve öğeleri değiştirmeyi kolaylaştırır. Dizi ayrıca sabit bir boyuta sahiptir. Öğeler, oluşturulduğu sırada tahsis edilir. Bağlantılı listede, bir öğeye erişmek için bir işaretçi kullanılır. Bağlantılı bir listenin öğeleri mutlaka sıralı sırada saklanmaz. Bağlantılı bir liste, oluşturulduğu sırada düğümler içerebileceğinden bilinmeyen bir boyuta sahiptir. Bir öğeye erişmek için bir işaretçi kullanılır, bu nedenle bellek ayırma daha kolaydır.

C'de bir işaretçi nedir?

İşaretçi, herhangi bir değişkenin veya işlevin adresini saklayan C'deki bir veri türüdür. Genellikle başka bir bellek konumuna referans olarak kullanılır. Bir işaretçi, bir dizinin, yapının, işlevin veya başka herhangi bir türün bellek adresini tutabilir. C, işlevlere değer iletmek ve işlevlerden değer almak için işaretçiler kullanır. İşaretçiler, bellek alanını dinamik olarak ayırmak için kullanılır.