একটি ASP.NET MVC অ্যাপ্লিকেশনে ফিল্টার তিনটি লেভেলে প্রয়োগ করা যায়।
- অ্যাকশন মেথড লেভেল
- কন্ট্রোলার লেভেল
- গ্লোবাল লেভেল
অ্যাকশন মেথড লেভেল
অ্যাকশন মেথড লেভেলে প্রয়োগ করা ফিল্টার শুধু সেটি নির্দিষ্ট অ্যাকশন মেথডের জন্য কাজ করে।
using System.Web.Mvc;
namespace DemoMvcApplication.Controllers
{
public class HomeController : Controller
{
[Authorize] // Action Method Level
public string Index()
{
return "Index Invoked";
}
}
}
কন্ট্রোলার লেভেল
কন্ট্রোলার লেভেল ফিল্টার সকল অ্যাকশন মেথডে প্রয়োগ হয়। নিচের ফিল্টার HomeController-এর সকল অ্যাকশন মেথডে প্রযোজ্য, কিন্তু অন্যান্য কন্ট্রোলারে নয়।
using System.Web.Mvc;
namespace DemoMvcApplication.Controllers
{
[Authorize] // Controller Level
public class HomeController : Controller
{
public string Index1()
{
return "Index1 Invoked";
}
public string Index2()
{
return "Index2 Invoked";
}
}
}
গ্লোবাল লেভেল
গ্লোবাল লেভেল ফিল্টার global.asax.cs ফাইলের Application_Start ইভেন্টে ডিফল্ট FilterConfig.RegisterGlobalFilters() মেথড ব্যবহার করে প্রদান করা হয়। গ্লোবাল ফিল্টার অ্যাপ্লিকেশনের সকল কন্ট্রোলার এবং অ্যাকশন মেথডে প্রয়োগ হয়।
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new AuthorizeAttribute());
}
}