我想申请一个动作过滤器 http://weblogs.asp.net/rashid/archive/2008/03/28/asp-net-mvc-action-filter-caching-and-compression.aspx在 ASP.NET MVC 中到我的应用程序中的每个操作 - 在每个控制器上。
有没有办法做到这一点而不将其应用于每个 ActionResult 方法?
是的,您可以这样做,但这不是开箱即用的方式。我做了以下事情:
- 创建一个基本控制器类并让所有控制器继承它
- 创建一个动作过滤器属性并让它继承 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 操作过滤器。我有完整的样本并在此发布在我的博客上 http://www.iansuttle.com/blog/post/ASPNET-MVC-Action-Filter-for-Localized-Sites.aspx如果您想了解更多细节。
希望有帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)