我想知道ASP.NET MVC中自定义操作过滤器和自定义操作选择器之间的区别。
假设我们想要根据某些规则限制谁可以访问控制器上的操作方法。我可以创建一个动作过滤器来扩展 ActionFilterAttribute 类或扩展 ActionMethodSelectionAttribute 类,这样我就可以得到类似的内容:
[MyRestriction]
public ActionResult AnyAction(){}
有人可以解释它们之间的差异,以便我做出正确的决定吗?
答案 0 :(得分:4)
如果您查看ActionMethodSelectionAttribute
的文档,您会在页面的最底部看到有许多其他类派生自此属性。
这些包括:
换句话说,这些是控制在路由期间选择哪个操作方法的属性,当有多个不同的选择可供选择时(即有2个不同的索引方法,一个用[HttpGet]
修饰,一个用{ {1}})。
ActionFilterAttribute
仅在动作实际执行时被调用。
以这种方式思考,即使动作没有执行,选择也可以运行,ActionFilter只有在执行时才会运行。选择过滤器仅用于确定操作是否为匹配条件,操作过滤器用于在执行操作或响应之前,之后等执行某些操作。