1

我在全局过滤器中注册了一个属性。我希望它被禁用 2 个动作。我怎样才能做到这一点?

4

1 回答 1

4

有几种方法可以处理这个问题:

  1. 如果您可以控制动作过滤器的代码,则可以对其进行修改,以测试控制器动作是否用某些自定义标记属性(您将创建)进行修饰,并且在出现时不运行。然后,您将使用此标记属性装饰 2 个控制器操作。
  2. 如果您无法控制此属性的代码,则可以通过实现IFilterProvider接口和在GetFilters您需要实现的方法内部编写自定义过滤器提供程序,以测试控制器操作是否用一些自定义标记属性装饰而不包括结果中的全局过滤器。然后不要将过滤器注册为全局操作过滤器,而是注册您的自定义过滤器提供程序。过滤器提供程序经常用于向动作过滤器提供依赖注入。例如,这里an article用 StructureMap 详细说明了这一点。
于 2013-02-25T13:43:35.677 回答