首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自定义动作过滤器ASP.NET MVC 4

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

Stack Overflow用户
提问于 2013-11-19 13:09:53
回答 3查看 4K关注 0票数 3

这东西要我的命了。基本上,我拥有的是自定义ActionFilter (类,它从ActionFilterAttribute继承并实现IActionFilter)。看上去像这样

代码语言:javascript
复制
public class ValidationFilterAttribute : ActionFilterAttribute, IActionFilter
{
    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        // do some stuff here
    }
}

这就是FilterConfig的样子

代码语言:javascript
复制
public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
        filters.Add(new ValidationFilterAttribute());
    }
}

但是每当我开始这个项目的时候,都会有一个例外,上面写着

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

但是很明显,ValidationFilterAttribute实现了其中一个接口。我是不是错过了一些最基本的东西?我不知道是怎么回事。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-19 13:20:08

在基类前面加上System.Web.Mvc,我有一个“预感”,您可能会使用System.Web.Http.Filters.ActionFilterAttribute

所以你必须重写

代码语言:javascript
复制
OnActionExecuting(ActionExecutingContext filterContext)

一切都会好起来的。

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

票数 8
EN

Stack Overflow用户

发布于 2013-11-19 13:19:04

据我所知,您不需要IActionFilter声明。ActionFilterAttribute已经实现了IActionFilter

但我不知道这是否是错误信息的原因。你能试着把它移开吗?

也请检查这个:http://forums.asp.net/t/1835666.aspx

票数 1
EN

Stack Overflow用户

发布于 2015-06-09 18:00:49

代码语言:javascript
复制
[Serializable] public class RedirectingAction : ActionFilterAttribute
{ 
    public override void OnActionExecuting(ActionExecutingContext context) { base.OnActionExecuting(context); 

}

之后,在控制器中使用以下属性

代码语言:javascript
复制
[RedirectingAction] 
public class HomeController : BaseController { }

使用自定义操作筛选器( www.jkittraining.com/course/asp-net-mvc-training/ )的示例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20072449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档