خانه دانلود خبرنامه سفارش سایت درباره ما ارتباط با ما حمایت از ما تبلیغات

آموزش کار با فیلتر Filter در ASP.Net MVC

آموزش کار با فیلتر Filter در ASP.Net MVC

همانطور که در مباحث قبلی اشاره کردیم، در چهارچوب کاری ASP.Net MVC، کنترلرها، متدهای اجرایی (action method) را تعیین کرده که معمولا رابطه ای یک به یک (one to one relationship) را با درخواست های کاربر دارند.
اما گاهی اوقات می خواهید کدها یا شرایطی را تعیین کنید که قبل از فراخوانی یک متد و یا پس از اجرای آن، اجرا شوند. برای پشتیبانی از این قابلیت، چهارچوب کاری ASP.Net MVC، فیلتر Filter را ارائه کرده است.
فیلترها (Filters) در MVC، کلاس هایی هستند که هم توانایی تعیین شروط و هم توانایی کدنویسی را جهت اضافه کردن دستورات قبل اجرای متد (Pre-action) و یا دستورات پس از اجرای متد (Post-action) را به متدهای اجرایی کنترلر، دارا هستند.
به عبارت ساده تر، توسط فیلترها (Filters) در MVC، می توانید دستورات یا شروطی را تعیین کنید که از فراخوانی یک متد و یا پس از اجرای آن، اجرا شوند.

آموزش کار با Action Filter در MVC

یک فیلتر اجرایی (action Filter)، خاصیتی است که می توانید به یک متد کنترلر یا کل کنترلر، اعمال نموده و نحوه اجرای آن را تغییر دهید.
چهارچوب کاری ASP.Net MVC، شامل چندین فیلتر اجرایی است که عبارتند از :
  • فیلتر OutputCache : این فیلتر خروجی (output) یک کنترلر را برای مدت معینی در حافظه نگهداری (cache) می کند.
  • فیلتر HandleError : فیلتر مدیریت کننده خطا (Handle error) زمانی فراخوانی می شود که متد یا action تعیین شده، اجرا شود.
  • فیلتر Authorize : از این فیلتر برای محدودسازی دسترسی یک کاربر یا قاعده خاص به یک متد اجرایی یا یک کنترلر استفاده می شود.

آموزش انواع فیلتر (Filter) در ASP.Net MVC

چهارچوب کاری MVC، از چهار نوع مختلف فیلتر به صورت زیر پشتیبانی می کند :
  • فیلتر Authorization Filters : این فیلتر خاصیت IAuthorizationFilter را اعمال می کند.
  • فیلتر Action Filters : این فیلتر خاصیت IActionFilter را اعمال می کند.
  • فیلتر result Filters : این فیلتر خاصیت IResultFilter را اعمال می کند.
  • فیلتر Exception Filters : این فیلتر خاصیت IExceptionFilter را اعمال می کند.

نکته نکته مهم 1 :

فیلترها (Filters)، همواره به ترتیب لیست فوق اجرا می شوند. برای مثال، فیلترهای اعتبارسنجی کاربران یا authorization filters همواره قبل از فیلترهای اجرایی action Filters اجرا می شوند. یا فیلتر exception filters همواره پس از تمامی فیلترهای دیگر اجرا خواهند شد.


نکته نکته مهم 2 :

از فیلترهای Authorization Filters برای اعمال احراز هویت کاربر (authorization) و تعیین سطوح دسترسی کاربر (authorization) در یک کنترلر، استفاده می شود. برای مثال، فیلتر Authorize filter مثالی از دسته فیلترهای Authorization هستند.

برای درک بهتر مطلب و مشاهده عملی کاربرد فیلترها، بیایید یک پروژه ASP.Net MVC ایجاد کنیم.

ساخت یک پروژه جدید MVC با قابلیت فیلتر Filter

مرحله 1 : برنامه ویژوال استودیو را باز کرده و گزینه های File، New Project را به ترتیب کلیک نموده تا پنجره زیر، جهت ایجاد یک پروژه جدید MVC باز شود :
ساخت یک پروژه جدید MVC با قابلیت فیلتر Filter
مرحله 2 : از پنل سمت چپ، از بخش Templates، گزینه های C# و Web را به ترتیب انتخاب کنید.
مرحله 3 : در پنل وسط، گزینه ASP.Net Web Application را انتخاب کنید.
مرحله 4 : در قسمت نام پروژه (Name)، عبارت MVCFiltersDemo را وارد کرده و جهت ادامه، دکمه ok را بزنید.
خواهید دید پنجره زیر جهت تعیین محتوی اولیه پروژه ASP.Net MVC باز خواهد شد :
ساخت یک پروژه جدید MVC با قابلیت فیلتر Filter
مرحله 5 : برای اینکه کار ساده تر باشد، گزینه Empty را جهت ایجاد یک پروژه خالی MVC انتخاب کنید. همچنین تیک گزینه MVC را در بخش Add folders… علامت زده تا پوشه ها و فایل های اصلی پیش فرض MVC به سایت اضافه شوند.
عملیات فوق یک پروژه جدید MVC را با حداقل محتوی لازم، ایجاد می کند.
مرحله 6 : برای اضافه کردن یک کنترلر جدید به پروژه، بر روی پوشه Controller در منوی Solution Explorer کلیک راست کرده و گزینه های Add و Controller را بزنید.
پنجره add Scaffold به صورت زیر باز می شود :
ساخت یک پروژه جدید MVC با قابلیت فیلتر Filter
مرحله 7 : از کادر فوق، گزینه MVC 5 Controller-Empty را انتخاب کرده و دکمه add را بزنید.
کادر Add Controller به صورت زیر باز خواهد شد :
ساخت یک پروژه جدید MVC با قابلیت فیلتر Filter
مرحله 8 : نام کنترلر را HomeController تعیین نموده و دکمه Add را بزنید.
ویژوال استودیو یک فایل جدید C# به نام “HomeController.cs” را به پوشه Controllers اضافه کرده و آن ها را جهت ویرایش، برایتان باز می کند.

آموزش اعمال فیلتر Filter در ASP.Net MVC

یک فیلتر اجرایی (action filter) را می توانید به یک متد کنترلر (action) و کل کنترلر، اعمال نمایید.
برای مثال، در کد فایل زیر یک فیلتر اجرایی OutputCache به متد اجرایی Index() که یک مقدار متنی (string) را بر می گرداند، اعمال شده است. این فیلتر باعث می شود، مقدار برگشتی متد Index برای مدت 15 ثانیه در حافظه ذخیره یا Cache شود.
برای اعمال فیلتر اشاره شده، کد متد Index() را به صورت زیر تغییر دهید :
syntax
کد
using System;
using System.Collections.Generic;
using System.Linq;

using System.Web;
using System.Web.Mvc;

namespace MVCFiltersDemo.Controllers {
   public class HomeController : Controller{
      // GET: Home
      [OutputCache(Duration = 15)]
		
      public string Index(){
         return "This is ASP.Net MVC Filters Tutorial";
      }
   }
}
                                    
پس از اینکه برنامه را اجر کنید، خواهید دید مرورگر خروجی متد index() را به صورت زیر نشان می دهد :
ساخت یک پروژه جدید MVC با قابلیت فیلتر Filter
حال بیایید متد اجرایی (action method) دیگری را که زمان جاری سرور را نمایش می دهد، به صورت زیر به کنترلر اضافه کنیم :
syntax
کد
                                        namespace MVCFiltersDemo.Controllers{
   public class HomeController : Controller{
      // GET: Home
		
      [OutputCache(Duration = 15)]
      public string Index(){
         return "This is ASP.Net MVC Filters Tutorial";
      }
		
      [OutputCache(Duration = 20)]
      public string GetCurrentTime(){
         return DateTime.Now.ToString("T");
      }
   }
}
                                    
اگر آدرس http://localhost:62833/Home/GetCurrentTime را در مرورگر درخواست نمایید، خروجی زیر را دریافت خواهید کرد :
ساخت یک پروژه جدید MVC با قابلیت فیلتر Filter
اگر مجددا مرورگر را رفرش کنید، چون زمان نمایش داده شده قبلی را مشاهده خواهید کرد (نه زمان جدید)، زیرا خروجی action به مدت 20 ثانیه در حافظه Cache شده است. این زمان پس از سپری شدن 20 ثانیه، به روز خواهد شد.
© Copyright 2007 - 2026 Developer 1 ®
Designed & Owned By Mehrdad Fattahi
Pishgaman Toseye Web Company
استفاده از مطالب سايت با ذکر آدرس کامل و نام سايت بلامانع است .
این سایت در سامانه وزارت فرهنگ و ارشاد اسلامی ثبت شده است .