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

相關問題