2010-06-08 43 views
1

OnActionExecuting当动作即将执行时触发。如何识别控制器操作方法中使用的Actionfilter?

如果我的动作有actionfilter

 

[myCustomActionFilter] 
public ActionResult MyAction() 
{ 
//implementation 
} 
 

是否有可能来确定(内OnActionExecuting事件),一个动作已应用到它myCustomActionFilter

回答

2

上述方法区分大小写。

public void OnActionExecuting(ActionExecutingContext filterContext) 
{ 
    var actionDescriptor = filterContext.ActionDescriptor; 
    if (actionDescriptor.IsDefined(typeof(myCustonActionFilter), true)) 
    { 
     var attributeInstance = (myCustomActionFilter) actionDescriptor.GetCustomAttributes(typeof(myCustomActionFilter), true); 

    } 
} 
1
 public void OnActionExecuting(ActionExecutingContext filterContext) 
      { 
       var controllerType = filterContext.Controller.GetType(); 
       var actionMethod = controllerType.GetMethod(filterContext.ActionDescriptor.ActionName); 
       if (actionMethod.IsDefined(typeof(myCustomActionFilter),true)) 
       { 
        var attributeInstance = 
         (myCustomActionFilter) actionMethod.GetCustomAttributes(typeof (myCustomAct 
ionFilter), true); 
     } 
相关问题