2013-01-17 33 views
6

考慮下面的代碼:ASP.NET MVC爲您在控制器定製屬性或行動

public class MyAttribute : Attribute { } 

[MyAttribute] 
public class MyControlller : Controller 
{ 
     //... 
} 

現在,我有一個Global Action Filter這讓我的ActionExecutingContext對象。

我的問題是,在這裏,我如何檢查請求的Controller是否已裝飾我的自定義Attribute

+0

如果過濾器被註冊爲「全局」過濾器,然後在默認情況下所有的控制器操作的所有請求將通過過濾器。 – Matt

+1

@Matt,我明白了,那就是我想要做的。但我想排除一些基於Controller或Action的邏輯。所以,我認爲最好爲這樣的Action或Controller設置一個屬性,並在filter方法中檢查相同的內容以排除所需的邏輯。 –

回答

9

嘗試

actionExecutingContextInstance.Controller.GetType().GetCustomAttributes(typeof(MyAttribute), false).Length > 0) 

或者

actionExecutingContextInstance.ActionDescriptor.GetCustomAttributes(typeof(MyAttribute), false).Length > 0) 
+0

這個goldplated版本:http://stackoverflow.com/a/34956930/11635 –