这东西要我的命了。基本上,我拥有的是自定义ActionFilter (类,它从ActionFilterAttribute继承并实现IActionFilter)。看上去像这样
public class ValidationFilterAttribute : ActionFilterAttribute, IActionFilter
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
// do some stuff here
}
}这就是FilterConfig的样子
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new ValidationFilterAttribute());
}
}但是每当我开始这个项目的时候,都会有一个例外,上面写着
给定的过滤器实例必须实现以下一个或多个筛选器接口: IAuthorizationFilter、IActionFilter、IResultFilter、IExceptionFilter。
但是很明显,ValidationFilterAttribute实现了其中一个接口。我是不是错过了一些最基本的东西?我不知道是怎么回事。
发布于 2013-11-19 13:20:08
在基类前面加上System.Web.Mvc,我有一个“预感”,您可能会使用System.Web.Http.Filters.ActionFilterAttribute。
所以你必须重写
OnActionExecuting(ActionExecutingContext filterContext)一切都会好起来的。
正如您所看到的,ActionFilterAttribute已经实现了IActionFilter,因此不需要指定它。
发布于 2013-11-19 13:19:04
据我所知,您不需要IActionFilter声明。ActionFilterAttribute已经实现了IActionFilter
但我不知道这是否是错误信息的原因。你能试着把它移开吗?
也请检查这个:http://forums.asp.net/t/1835666.aspx
发布于 2015-06-09 18:00:49
[Serializable] public class RedirectingAction : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context) { base.OnActionExecuting(context);
}之后,在控制器中使用以下属性
[RedirectingAction]
public class HomeController : BaseController { }使用自定义操作筛选器( www.jkittraining.com/course/asp-net-mvc-training/ )的示例
https://stackoverflow.com/questions/20072449
复制相似问题