MVC中的过滤器分四种分别为:IActionFilter(动作过滤器), IAuthorizationFilter(授权过滤器), IExceptionFilter(异常过滤器), IResultFilter(结果过滤器)字面翻译,凑合理解吧。
在此就那IActionFilter举例,在这个接口中有两个方法,分别是:OnActionExecuting(Action执行前执行)和OnActionExecuted(Action执行后执行),
现在我们要想让一个Controller中的所有Action都执行这个过滤器就需要对里面的方法进行重写
public class LoginController : Controller { // // GET: /Login/ public ActionResult Index() { return View(); } public ActionResult Login() { string name = HttpContext.Request["UserName"]; ViewData["name"] = name; return View(); } protected override void OnActionExecuting(ActionExecutingContext filterContext) { //object[] attrs = filterContext.ActionDescriptor.GetCustomAttributes(typeof(NoFilter), true); //if (attrs.Length == 1)//有NoFilter属性 //{ // return; //} string name = filterContext.HttpContext.Request["UserName"]; if (string.IsNullOrEmpty(name)) { filterContext.HttpContext.Response.Write("<script>alert('名称不能为空!');</script>"); filterContext.HttpContext.Response.End(); } } }