MVC在filter中如何獲取控制器名稱和Action名稱


使用ActionExecutingContext對象可以獲取控制器名稱、Action名稱、參數名稱以及參數值。路由和Action返回值不影響結果。

 

在代碼中

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class ViewLogAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        base.OnActionExecuting(filterContext);
    }
}

 

1.獲取控制器名稱代碼 

 var controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;

var controllerName = HttpContext.Current.Request.RequestContext.RouteData.Values["Controller"];

2.獲取Action名稱代碼

var actionName = filterContext.ActionDescriptor.ActionName;

 

var actionName = HttpContext.Current.Request.RequestContext.RouteData.Values["Action"];

 3.獲取Action參數名稱

//獲取參數數組
var arrParameter = filterContext.ActionDescriptor.GetParameters();
//根據索引獲取對應參數名
var paramName = arrParameter[0].ParameterName;

4.獲取參數值

var parameterValue = filterContext.Controller.ValueProvider.GetValue(paramName).RawValue;

如果可以確定參數名稱可以直接用ActionParameters通過Key來獲取,Key指參數名稱

var parameterValue = filterContext.ActionParameters["KeyName"];

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM