Action Filters in ASP.NET

beginner
12 min

Action Filters in ASP.NET

Welcome to our comprehensive guide on Action Filters in ASP.NET! 🚀

Action filters are a powerful feature in ASP.NET MVC that allows you to execute code before or after an action method is executed. They are a great way to implement common functionality across multiple action methods. Let's dive in!

Understanding Action Filters 💡

Action filters are attributes that you apply to your action methods or controllers. They are executed at runtime by the ASP.NET MVC framework.

Here's a simple example of an action filter:

csharp
using System.Web.Mvc; public class MyActionFilter : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { // Your code here } }

In this example, MyActionFilter is an action filter that gets executed before the action method. The OnActionExecuting method is where you write your code to be executed.

Types of Action Filters 📝

Action filters can be categorized into two types:

  1. Authorization filters: These filters are used to authorize access to an action method. They can check if the user is authenticated, has the required role, or has the necessary permissions.

  2. Result filters: These filters are executed after an action method has been executed. They can modify the action result, such as adding a view bag item or redirecting to another action.

Creating Authorization Filters 🎯

Let's create a simple authorization filter that checks if the user is authenticated:

csharp
using System.Web.Mvc; using System.Web.Security; public class AuthenticateFilter : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { if (!FormsAuthentication.Authenticated) { filterContext.Result = new RedirectResult("~/Account/Login"); } } }

In this example, if the user is not authenticated, the action method will not be executed, and the user will be redirected to the login page.

Creating Result Filters 🎯

Now, let's create a simple result filter that adds a view bag item:

csharp
using System.Web.Mvc; public class MyResultFilter : ActionFilterAttribute { public override void OnResultExecuted(ResultExecutedContext filterContext) { filterContext.Controller.ViewBag.Message = "Welcome to CodeYourCraft!"; } }

In this example, the OnResultExecuted method is executed after the action method and the view has been rendered. The view bag item Message is added, which can be accessed in the view.

Putting it All Together ✅

Let's combine our authorization and result filters:

csharp
using System.Web.Mvc; using System.Web.Security; public class MyFilters : FilterAttribute, IActionFilter, IResultExecutor { public void OnActionExecuting(ActionExecutingContext filterContext) { if (!FormsAuthentication.Authenticated) { filterContext.Result = new RedirectResult("~/Account/Login"); } } public void OnActionExecuted(ActionExecutedContext filterContext) { filterContext.Controller.ViewBag.Message = "Welcome to CodeYourCraft!"; } public void OnResultExecuted(ResultExecutedContext filterContext) { // Your code here } }

In this example, we have combined our authorization and result filters into a single filter. The OnActionExecuting method checks if the user is authenticated and redirects to the login page if not. The OnActionExecuted method adds a view bag item.

Quiz 💡

Quick Quiz
Question 1 of 1

What is the purpose of an action filter in ASP.NET MVC?

That's it for this lesson on Action Filters in ASP.NET MVC! We hope you found it informative and practical. Stay tuned for more tutorials on CodeYourCraft. Happy coding! 🎉