当前位置:  开发笔记 > 编程语言 > 正文

你能在每个动作上在ASP.NET-MVC中应用ActionFilter吗?

如何解决《你能在每个动作上在ASP.NET-MVC中应用ActionFilter吗?》经验,为你挑选了2个好方法。

我想在ASP.NET MVC中将ActionFilter应用到我的应用程序中的每个操作 - 在每个控制器上.

有没有办法在不将其应用于每个ActionResult方法的情况下执行此操作?



1> Ian Suttle..:

是的,你可以做到这一点,但它不是开箱即用的方式.我做了以下事情:

    创建一个基本控制器类,并让所有控制器继承它

    创建一个动作过滤器属性,并使其继承自FilterAttribute和IActionFilter

    使用新的操作过滤器属性装饰基本控制器类

以下是动作过滤器属性的示例:

public class SetCultureAttribute : FilterAttribute, IActionFilter 
{ 
    #region IActionFilter implementation

    public void OnActionExecuted(ActionExecutedContext filterContext)
    {
        //logic goes here
    }

    public void OnActionExecuting(ActionExecutingContext filterContext)
    {
        //or logic goes here
    }

    #endregion IActionFilter implementation
}

以下是具有此属性的基本控制器类的示例:

[SetCulture]
public class ControllerBase : Controller
{
    ...
}

只要控制器类继承自ControllerBase,就使用此方法,然后始终执行SetCulture操作过滤器.我有一个完整的样本,并在我的博客上发布,如果你想了解更多细节.

希望有所帮助!



2> Tony Basallo..:

情况如何好转...两年后,我们有了

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorElmahAttribute());
    }

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有