问题描述
我使用.NET Core 3.1,并且有一个要在除一个控制器之外的所有控制器中使用的过滤器。
我不想在所有控制器上使用[attribute]
。
我只需要说一种特定的控制器不使用过滤器的方式即可。
解决方法
您可以实现Filter全局设置,在FilterConfig上设置类似的内容。
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews(options =>
{
options.Filters.Add(typeof(MySampleActionFilter));
});
}
然后,您可以检查当前控制器是否是在CustomFilter上执行的控制器。
public class CustomActionFilter : ActionFilterAttribute,IActionFilter
{
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
{
if(!filterContext.ActionDescriptor.ControllerDescriptor.ControllerName == "ExemptedController") {
OnActionExecuting(filterContext);
}
}
}