2011-09-05 88 views

回答

2

您可以使用ActionDescriptor.GetCustomAttributes獲得適用於操作屬性。 ActionExecutingContext和ActionExecutedContext都暴露了一個名爲ActionDescriptor的屬性,允許您獲取ActionDescriptor類的實例。

1

您可以使用反射來查看動作是否具有HttpPostAttribute。 假設你的方法是類似的東西:

[HttpPost] 
public ActionResult MyAction(MyViewModel model) 
{ 
    //my code 
} 

你可以用這個做了測試:

var controller = GetMyController(); 
    var type = controller.GetType(); 
    var methodInfo = type.GetMethod("MyAction", new Type[1] { typeof(MyViewModel) }); 
    var attributes = methodInfo.GetCustomAttributes(typeof(HttpPostAttribute), true); 
    Assert.IsTrue(attributes.Any()); 
1

更簡單的方法,我發現如下:

var controller = GetMyController(); 
var type = controller.GetType(); 
var methodInfo = type.GetMethod("MyAction", new Type[1] { typeof(MyViewModel) }); 
bool isHttpGetAttribute = methodInfo.CustomAttributes.Where(x=>x.AttributeType.Name == "HttpGetAttribute").Count() > 0 

我希望這幫助。

快樂編碼。

相關問題