0

请问有人能解释BindFilter<>方法中的FilterScope是什么?Ninject BindFIlter <>中的FilterScope参数的用途是什么?

我使用了以下内容:

kernel.BindFilter<QuizExists>(System.Web.Mvc.FilterScope.Controller, null).WhenControllerHas<QuizExistsAttribute>(); 

kernel.BindFilter<QuizExists>(System.Web.Mvc.FilterScope.Action, null).WhenActionMethodHas<QuizExistsAttribute>(); 

看来,FilterScope影响其属性的执行顺序,但存在对第二个参数,这是order

什么给?

回答

1

关于FilterScope的用途,documentation的评论非常清楚。它将过滤器的范围限制为Controller级别或Action级别。

虽然order参数似乎没有记录,但我会假设它控制应用过滤器的顺序,如果有多个应用于单个控制器或操作。例如,您可以在LogFilter之前运行AuditFilter,而不管它们注册的顺序如何。如果您直接将一些过滤器属性应用于控制器并通过Ninject注册其他过滤器属性,则此功能尤为重要 - 不带此参数将无法告诉框架应用它们的顺序。

+0

尽管它没有任何意义,因为过滤器已经是某种类型的,比如'IActionFilter'' IAuthorizationFilter'。如果我有其中一个FilterScope不起作用...任何想法? – Luke

+0

是的,过滤器是一种特定的类型,但是如果你看看(例如)'AuthorizeAttribute'是如何注册的,它可以在全局层次上(在'GlobalFilters.Filters'中),它会一直运行,控制器级别将运行于控制器内的任何操作或操作级别。所有这些都是模仿这种行为。 – NightOwl888

相关问题