2013-01-17 16 views
6

Betrachten Sie den folgenden Code ein:ASP.NET MVC-Check für benutzerdefinierte Attribute in-Controller oder Aktion

public class MyAttribute : Attribute { } 

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

Nun, da ich eine Global Action Filter haben, die mir ein ActionExecutingContext Objekt erhält.

Meine Frage ist, hier, wie überprüfe ich, ob die angeforderte Controller mit meiner benutzerdefinierten Attribute geschmückt worden ist.

+0

Wenn Ihr Filter als "global" Filter registriert wird dann standardmäßig alle Anforderungen an alle Controller-Aktionen werden durch den Filter passieren. – Matt

+1

@Matt, das verstehe ich und das möchte ich tun. Aber ich möchte einige Logik basierend auf dem Controller oder der Aktion ausschließen. Also dachte ich, es wäre besser, ein Attribut für eine solche Aktion oder einen solchen Controller zu setzen und dasselbe in der Filtermethode zu überprüfen, um die gewünschte Logik auszuschließen. –

Antwort

9

Versuchen

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

Oder

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

vergoldete Ausgabe von diesem: http://StackOverflow.com/A/34956930/11635 –