如何在MVC4中禁用特定操作\控制器的全局属性

时间:2013-02-25 13:40:42

标签: c# asp.net-mvc-4

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

1 个答案:

答案 0 :(得分:4)

有几种方法可以解决这个问题:

  1. 如果您可以控制动作过滤器的代码,则可以对其进行修改,以便测试控制器动作是否使用某些自定义标记属性(您将创建)进行修饰,并且如果是,则不运行。然后,您将使用此标记属性修饰2个控制器操作。
  2. 如果您无法控制此属性的代码,则可以通过实施IFilterProvider界面并在GetFilters方法内部编写自定义过滤器提供程序,以便实现测试是否需要控制器操作使用一些自定义标记属性进行修饰,并且不在结果中包含全局过滤器。然后,不要将过滤器注册为全局操作过滤器,而是注册自定义过滤器提供程序。过滤器提供程序通常用于向操作过滤器提供依赖项注入。例如,这里是an article,它详细说明了StructureMap。