B Z*_*B Z 8 asp.net-mvc asp.net-mvc-3
我有一个过滤器,想要应用于除一个以外的所有控制器.所以我想写一些看起来像这样的东西:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new MySweetAttribute()).Exclude(OneController);
}
Run Code Online (Sandbox Code Playgroud)
试图通读Brad关于这个主题的帖子对我来说是胡言乱语
http://bradwilson.typepad.com/blog/2010/07/service-location-pt4-filters.html
我假设它是可能的,因为下面的库似乎这样做,但我想避免添加依赖项,如果可能的话.
http://www.codeproject.com/KB/aspnet/FluentFltrsASPNETMVC3.aspx
希望有人已经这样做了,很容易做到......
谢谢你的帮助.
Phil Haack刚刚发布了如何处理这种情况.
http://haacked.com/archive/2011/04/25/conditional-filters.aspx
ele*_*u81 31
我一直在网上搜索同样的问题而没有运气,所以我自己尝试了这个并且它有效:
public class MySweetAttribute: ActionFilterAttribute
{
public bool Disable { get; set; }
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (Disable) return;
...
}
}
Run Code Online (Sandbox Code Playgroud)
然后,当您想要禁用全局过滤器时,只需将该属性添加到操作中,并将disable propierty设置为true:
[MySweetAttribute(Disable=true)]
public ActionResult Index()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
希望这有帮助
我认为您需要实现一个过滤器提供程序来执行此操作,然后当您实现 GetFilters 时,不要将过滤器应用于您希望排除的操作。这是一个例子:
http://www.dotnetcurry.com/ShowArticle.aspx?ID=578