ASP.NET MVC - 以编程方式添加动作过滤器

Tim*_*eel 5 .net asp.net-mvc

我一直在做一些关于动作过滤器的研究,并想知道是否有办法以编程方式将它们添加到控制器?

为了给出一些上下文,我想在web.config中配置日志记录时添加日志记录过滤器,否则我不希望过滤器存在于每个操作方法的执行链中.

我很欣赏我可以检查实际的过滤器代码本身,看看是否已启用日志记录,但不希望必须这样做.

非常感谢!

Mat*_*nze 1

更好的解决方案是使用空对象模式

您的过滤器将正常记录(它的工作是记录,而不是决定如何记录或记录到什么内容),但默认情况下,实际的记录器将是一个不执行任何操作的实现。如果已配置,记录器实例将是按配置记录的实现。

一个简单的工厂可以决定将哪个记录器实现传递给过滤器,或者可以配置任何 IOC 容器来处理它。

  • 虽然这确实解决了一般情况并解决了OP的问题,但它实际上并没有回答问题。我来这里寻找有关基于问题标题的过滤器编程操作的指南。 (2认同)