Filter Tindakan di MVC [Jenis Filter dengan Contoh]

Diterbitkan: 2021-03-04

Daftar isi

ASP.NET MVC – Filter Tindakan

Dalam filter MVC (Model-View-Controller), kami menggunakan logika tambahan sesuai dengan fungsi atau logika yang berbeda dari pemrosesan permintaan Kerangka MVC.

Filter MVC menerapkan proses untuk tingkat yang berbeda: misalnya, otorisasi, logging, dan caching.

Kami dapat mempertimbangkan filter Tindakan sebagai atribut yang dapat kami terapkan ke metode tindakan pengontrol untuk melakukan modifikasi sesuai logika bisnis.

Kami dapat mempertimbangkan filter MVC dari sistem. Atribut didefinisikan sebagai kelas, metode, properti, dan bidang.

Baca Juga: Proyek MVC

Kerangka ASP.NET MVC Menggabungkan Berbagai Filter Tindakan

Otorisasi : Filter tindakan ini memiliki kemampuan membatasi akses ke peran pengguna tertentu.

OutputCache : Ini adalah filter tindakan, dan menyimpan hasil dari metode tindakan pengontrol dalam waktu yang ditentukan.

HandleError : Ketika tindakan pengontrol ini dijalankan, ia menangani kesalahan dalam skenario tertentu jika kode gagal. Ini memungkinkan Anda untuk membuat filter tindakan kustom Anda.

Misalnya, kita dapat membuat filter tindakan khusus untuk menjalankan sistem otentikasi khusus.

Sumber

Filter pipeline dalam aliran siklus hidup permintaan dan respons:

Sumber

Filter menyediakan dua kategori penerapan logika dalam kode, ia melakukan definisi antarmuka yang berbeda-

  1. Sinkronis
  2. Tidak sinkron

Filter Sinkron

Dalam filter Sinkronisasi, kita dapat menjalankan kode sebelum dan sesudah pipa saat proses; kita dapat menganggapnya sebagai metode tindakan OnStageExecuting dan OnStageExecuted .

Filter Asinkron

Filter asinkron dijelaskan dengan metode tunggal, yang memiliki metode:

  • OnActionExecuting
  • AktifAksiDieksekusi
  • OnActionExecutionAsync

Cuplikan kode di bawah ini adalah jenis deklarasi

TimestampFilter kelas publik : IActionFilter, IAsyncActionFilter

{

public void OnActionExecuting (konteks ActionExecutingContext)

{

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

}

public void OnActionExecuted (konteks ActionExecutedContext)

{

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

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

}

Tugas asinkron publik OnActionExecutionAsync (konteks ActionExecutingContext, ActionExecutionDelegate selanjutnya)

{

this.OnActionExecuting(konteks);

var resultContext = menunggu berikutnya();

this.OnActionExecuted(resultContext);

}

}

Jenis Filter Tindakan di MVC

Kerangka kerja ASP.NET MVC memelihara berbagai filter:

Filter otorisasi: Menjalankan atribut IAuthorisationFilter.

Filter tindakan: Melakukan atribut IActionFilter.

Filter hasil : Jalankan atribut IResultFilter.

Filter pengecualian: Mengeksekusi atribut IExceptionFilter.

Filter Otorisasi

Kita bisa menggunakannya untuk aksesibilitas pengguna, dan kita bisa mendeklarasikannya sebelum implementasi metode aksi di controller.

Filter Otorisasi mengaktifkan dua atribut bawaan, misalnya: Otorisasi dan AllowAnonymous

Kami dapat menggunakan ini dalam logika khusus dalam kode sesuai kebutuhan bisnis kami.

Cuplikan kode di bawah ini adalah contoh filter Otorisasi

[Mengizinkan]

ActionResult SecureMethod() publik

{

kembali Lihat();

}

[IzinkanAnonim]

ActionResult NonSecureMethod() publik

{

kembali Lihat();

}

ActionResult SecureMethod() publik

{

kembali Lihat();

}

Filter Tindakan

Kita dapat menjelaskan filter Tindakan sebelum melakukan Metode Tindakan dan setelah metode tindakan.

Ini memegang dua jenis metode.

  1. AktifAksiDieksekusi
  2. OnActionExecuting

Cuplikan kode di bawah ini adalah contoh Filter Tindakan

menggunakan Sistem;

menggunakan System.Collections.Generic;

menggunakan System.Linq;

menggunakan System.Web;

menggunakan System.Web.Mvc;

namespace TutorialActionFilter.Filter

{

Myactionfilter kelas publik : FilterAttribute,IActionFilter

{

public void OnActionExecuted (ActionExecutedContext filterContext)

{

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

{

filterContext.Result = newRedirectResult(“/Beranda/Indeks”);

}

lain

{

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

}

}

public void OnActionExecuting (ActionExecutingContext filterContext)

{

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

{

filterContext.Result = newRedirectResult(“/Beranda/Indeks”);

}

lain

{

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

}

}

}

}

[Filter TindakanTutorial]

[TerimaVerb(HttpVerbs.Get)]

ActionResult GetPerson () publik

{

Orang p = Orang baru();

return View(“Orang”,p);

}

Filter Hasil

Kita dapat menjelaskan filter Tindakan sebelum melakukan Metode Tindakan dan setelah Metode Tindakan dilakukan.

Ini memegang dua jenis metode.

  1. OnResultDieksekusi
  2. OnResultExecuting

Cuplikan kode di bawah ini adalah contoh Filter Hasil

menggunakan Sistem;

menggunakan System.Collections.Generic;

menggunakan System.Linq;

menggunakan System.Web;

menggunakan System.Web.Mvc;

namespace ResultFilter.Filter

{

MyResultfilter kelas publik : FilterAttribute,IResultFilter

{

public void OnResultExecuted(ResultExecutedContext filterContext)

{

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

{

filterContext.Result = newRedirectResult(“/Beranda/Kontak”);

}

lain

{

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

}

}

public void OnResultExecuting (ResultExecutingContext filterContext)

{

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

{

filterContext.Result = newRedirectResult(“/Beranda/Kontak”);

}

lain

{

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

}

}

}

}

[Filter HasilSaya]

[TerimaVerb(HttpVerbs.Get)]

ActionResult GetPerson () publik

{

Orang p = Orang baru();

return View(“Orang”,p);

}

Filter Pengecualian

Kita dapat menggunakan ini ketika pengontrol atau metode tindakan melempar pengecualian.

Filter pengecualian ini penting untuk menangkap pengecualian.

Di bawah ini adalah cuplikan kode untuk menggunakan filter pengecualian

menggunakan Sistem;

menggunakan System.Collections.Generic;

menggunakan System.Linq;

menggunakan System.Web;

menggunakan System.Web.Mvc;

namespace ExceptionFilter.Filter

{

kelas publik MyExceptionFilter : FilterAttribute, IExceptionFilter

{

public void OnException (ExceptionContext filterContext)

{

filterContext.Controller.ViewBag.onExceptionError = “Filter ExceptionFilter dipanggil”;

filterContext.HttpContext.Response.Write(“Filter ExceptionFilter dipanggil”);

}

}

}

[Filter Pengecualian Saya]

HomeController kelas publik : Pengontrol

{

[TerimaVerb(HttpVerbs.Get)]

ActionResult GetPerson () publik

{

Orang p = Orang baru();

return View(“Orang”,p);

}

}

Baca Juga: Proyek Java MVC

Pelajari Kursus Perangkat Lunak online dari Universitas top dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Tingkat Lanjut, atau Program Magister untuk mempercepat karier Anda.

Kesimpulan

Kami harap artikel ini membantu Anda memahami filter Tindakan di MVC.

Jika Anda tertarik untuk mempelajari lebih lanjut tentang pengembangan tumpukan penuh, lihat Program PG Eksekutif upGrad & IIIT-B dalam Pengembangan Perangkat Lunak Tumpukan Penuh yang dirancang untuk para profesional yang bekerja dan menawarkan 500+ jam pelatihan ketat, 9+ proyek, dan tugas, status Alumni IIIT-B, proyek batu penjuru praktis & bantuan pekerjaan dengan perusahaan-perusahaan top.

Apa itu struktur data dalam pemrograman?

Struktur data adalah cara kita mengatur data dalam sebuah program. Dua struktur data yang paling penting adalah array dan linked list. Array adalah struktur data yang paling familiar, dan paling mudah untuk dipahami. Array pada dasarnya adalah daftar bernomor dari item terkait. Mereka mudah dipahami dan digunakan, tetapi tidak terlalu efisien saat bekerja dengan data dalam jumlah besar. Daftar tertaut lebih kompleks, tetapi bisa sangat efisien jika digunakan dengan benar. Mereka adalah pilihan yang baik ketika Anda harus menambahkan atau menghapus item di tengah daftar besar, atau ketika Anda perlu mencari item dalam daftar besar.

Apa perbedaan antara daftar tertaut dan array?

Dalam array, indeks digunakan untuk mengakses elemen. Elemen dalam array diatur dalam urutan berurutan, yang memudahkan untuk mengakses dan memodifikasi elemen jika indeks digunakan. Array juga memiliki ukuran tetap. Elemen dialokasikan pada saat pembuatannya. Dalam linked list, pointer digunakan untuk mengakses sebuah elemen. Elemen daftar tertaut tidak harus disimpan secara berurutan. Daftar tertaut memiliki ukuran yang tidak diketahui karena dapat berisi node pada saat pembuatannya. Pointer digunakan untuk mengakses suatu elemen, sehingga alokasi memori lebih mudah.

Apa itu pointer di C?

Pointer adalah tipe data dalam C yang menyimpan alamat variabel atau fungsi apa pun. Biasanya digunakan sebagai referensi ke lokasi memori lain. Pointer dapat menyimpan alamat memori array, struktur, fungsi, atau tipe lainnya. C menggunakan pointer untuk meneruskan nilai ke dan menerima nilai dari fungsi. Pointer digunakan untuk mengalokasikan ruang memori secara dinamis.