Action Filters in MVC
Action Filters are used to write processing loic before and after action execution.
Example: First Create Controller
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Diagnostics; namespace WebApplication1.Controllers { public class ActionFilterSamoleController : Controller, IActionFilter { // // GET: /ActionFilterSamole/ public ActionResult Index() { return View(); } void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext) { Trace.WriteLine("Action is Executed at " + DateTime.Now.ToString()); } void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext) { Trace.WriteLine("Action is Executing at " + DateTime.Now.ToString()); //throw new NotImplementedException(); } } }
Step 2: Attach View with Index
Step 3: Write web.config file
Step 4: Create log.txt file in d drive and execute application , you will get all trace information in log.txt.
Note : Creation of actionfilters in this way is limited scope , means these action filters are applicable only for this controller. In order to make these action filters across all controller we have to use Action filter attribute.
ActionFilter Attribute:
IN this process first we will create public class which will inherit ActionFilterAttribute, IActionFilter . After it we will write interface implementation logic and decorate our controller with newly created custom Action Filter.
Example
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Diagnostics; namespace WebApplication1.Controllers { [MyActionFilter] public class ActionFilterSamoleController : Controller, IActionFilter { // // GET: /ActionFilterSamole/ public ActionResult Index() { return View(); } public ActionResult Second() { return View("Index"); } } public class MyActionFilter : ActionFilterAttribute, IActionFilter { void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext) { //To Get Descrition of invoking method Trace.WriteLine(filterContext.ActionDescriptor.ActionName + " was Executed at " + DateTime.Now.ToString()); } void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext) { //To Redirect somewhere else we can write filterContext.Result = new RedirectResult("https://yogeshdotnet.com"); Trace.WriteLine(filterContext.ActionDescriptor.ActionName + " is Executing at " + DateTime.Now.ToString()); //throw new NotImplementedException(); } } }