Follow by Email

Friday, December 5, 2014

Implementing Custom MVC filters [Part 1]

hi lets implement mvc filters
Filters help us to add logic before and after a controller action which is getting called. (Like we need to log something when controller action is called)
types of filters in mvc :
1. Authorization filter
2. Action filter
3. result filter (viewresult, jsonresult etc.)
4. exception filter

create a new mvc empty project. Now i will add a new controller and will return a string to the view using viewbag.
Now for implementing Custom MVC filters, we will implement methods from IAuthorizationFilter,IActionFilter,IResultFilter,IExceptionFilter

controller code 
public class MainController : Controller,IAuthorizationFilter,IActionFilter,IResultFilter,IExceptionFilter
// GET: /Main/
public ActionResult Index()
ViewBag.message = “hello world”;
return View();
protected override void OnAuthorization(AuthorizationContext filterContext)
ViewBag.AuthorizationMsg = “From OnAuthorization method”;
protected override void OnActionExecuting(ActionExecutingContext filterContext)
ViewBag.ActionExecutingMsg = “From OnActionExecuting method”;
protected override void OnActionExecuted(ActionExecutedContext filterContext)
ViewBag.ActionExecutedMsg = “From OnActionExecuted method”;
protected override void OnResultExecuting(ResultExecutingContext filterContext)
ViewBag.ResultExecutingMsg = “From OnResultExecuting method”;
protected override void OnResultExecuted(ResultExecutedContext filterContext)
ViewBag.ResultExecutedMsg = “From OnResultExecuted method”;
protected override void OnException(ExceptionContext filterContext)
ViewBag.ExceptionMsg = “From OnException method”;
View code
<!DOCTYPE html>
<meta name=”viewport” content=”width=device-width” />
<br />
<br />
<br />
<br />
<br />
<br />

Output :
Below is the sequence of execution of the methods:
As View gets rendered before OnResultExecuted method , we are not able to see the onresultexecuted viewbag message.
OnException method will get called when there is any exception.