您可以在 ASP.NET-MVC 中的每个操作上应用 ActionFilter

2024-01-05

我想申请一个动作过滤器 http://weblogs.asp.net/rashid/archive/2008/03/28/asp-net-mvc-action-filter-caching-and-compression.aspx在 ASP.NET MVC 中到我的应用程序中的每个操作 - 在每个控制器上。

有没有办法做到这一点而不将其应用于每个 ActionResult 方法?


是的,您可以这样做,但这不是开箱即用的方式。我做了以下事情:

  1. 创建一个基本控制器类并让所有控制器继承它
  2. 创建一个动作过滤器属性并让它继承 FilterAttribute 和 IActionFilter
  3. 使用新的操作过滤器属性装饰您的基本控制器类

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

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 操作过滤器。我有完整的样本并在此发布在我的博客上 http://www.iansuttle.com/blog/post/ASPNET-MVC-Action-Filter-for-Localized-Sites.aspx如果您想了解更多细节。

希望有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

您可以在 ASP.NET-MVC 中的每个操作上应用 ActionFilter 的相关文章

随机推荐