2013-01-17 41 views
6

Xét đoạn mã sau:ASP.NET MVC séc trị giá thuộc tính tùy chỉnh trong điều khiển hoặc hành động

public class MyAttribute : Attribute { } 

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

Bây giờ tôi có một Global Action Filter mà được tôi một đối tượng ActionExecutingContext.

Câu hỏi của tôi là, tại đây, làm cách nào để kiểm tra xem yêu cầu Controller đã được trang trí bằng tuỳ chỉnh Attribute của tôi chưa.

+0

Nếu bộ lọc của bạn được đăng ký như một bộ lọc "toàn cầu", sau đó theo mặc định tất cả các yêu cầu đối với tất cả các hành động điều khiển của bạn sẽ đi qua bộ lọc của bạn. – Matt

+1

@Matt, tôi hiểu điều đó và đó là điều tôi muốn làm. Nhưng tôi muốn loại trừ một số logic dựa trên Controller hoặc Action. Vì vậy, tôi nghĩ rằng nó sẽ là tốt hơn để có một thuộc tính thiết lập cho hành động như vậy hoặc điều khiển và kiểm tra cùng một bên trong phương pháp lọc để loại trừ logic mong muốn. –

Trả lời

9

Hãy thử

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

Hoặc

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

phiên bản mạ vàng của điều này: http://stackoverflow.com/a/34956930/11635 –

Các vấn đề liên quan