2015-05-21 96 views
1

我想知道自定義操作篩選器和ASP.NET MVC中的自定義操作選擇器之間的區別。ASP.NET MVC中的自定義操作篩選器和自定義操作選擇器之間有什麼區別?

說,我們要限制誰可以訪問的操作方法基於某些規則在控制器上。我既可以創建擴展ActionFilterAttribute類或延長ActionMethodSelectionAttribute類的行爲過濾器,這樣我就可以有類似:

[MyRestriction] 
public ActionResult AnyAction(){} 

任何人都可以解釋它們之間的差異,這樣我可以做出正確的決定?

回答

3

如果您查看ActionMethodSelectionAttribute的文檔,您會在頁面的最底部看到還有許多其他類來自此屬性。

這些包括:

  • Microsoft.Web.Mvc.AjaxOnlyAttribute
  • System.Web.Mvc.AcceptVerbsAttribute
  • System.Web.Mvc.HttpDeleteAttribute
  • System.Web.Mvc.HttpGetAttribute
  • System.Web.Mvc.HttpHeadAttribute
  • System.Web.Mvc.HttpOptionsAttribute
  • System.Web.Mvc.HttpPatchAttribute
  • System.Web.Mvc.HttpPostAttribute
  • System.Web.Mvc.HttpPutAttribute
  • System.Web.Mvc.NonActionAttribute

換句話說,這些是控制其中,當有幾個不同的選擇可供選擇處理法被路由時所選擇的屬性(即,存在2種不同的索引方法中,一個裝飾有[HttpGet]和一個與[HttpPost])。

ActionFilterAttribute,在另一方面,被稱爲只有當一個動作被實際執行。

想想看這樣,選擇可以運行,即使動作不執行,該ActionFilter只有當它運行。選擇過濾器僅用於確定動作是否爲匹配條件,動作過濾器用於在執行之前,之後等執行某個動作。執行動作或響應。

+0

難道我們可說什麼呢,而ActionFilterAttribute用於前或運行被稱爲操作後添加一些額外的邏輯是,ActionMethodSelection用於路由? – jobmo

+0

@jobmo - 這正是我所說的。 –

相關問題