自定义操作过滤器ASP.NET MVC 4

Dim*_*tri 3 c# asp.net-mvc

这件事让我伤心.基本上我所拥有的是自定义ActionFilter(继承自ActionFilterAttribute并实现IActionFilter的类).它看起来像这样

public class ValidationFilterAttribute : ActionFilterAttribute, IActionFilter
{
    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        // do some stuff here
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是FilterConfig的样子

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
        filters.Add(new ValidationFilterAttribute());
    }
}
Run Code Online (Sandbox Code Playgroud)

但每当我启动项目时,都会有一个例外情况

给定的过滤器实例必须实现以下一个或多个过滤器接口:IAuthorizationFilter,IActionFilter,IResultFilter,IExceptionFilter.

但显然ValidationFilterAttribute实现了其中一个接口.我错过了一些非常基本的东西吗?我无法弄清楚出了什么问题.

Roy*_*tus 8

在你的基类前缀System.Web.Mvc,我有一个你可能正在使用的"预感" System.Web.Http.Filters.ActionFilterAttribute.

那么你必须覆盖

OnActionExecuting(ActionExecutingContext filterContext)
Run Code Online (Sandbox Code Playgroud)

事情会好的.

正如您所看到的,已经ActionFilterAttribute实现IActionFilter了,因此您无需指定它.