您的位置:首页 > 其它

MVC在filter中如何获取控制器名称和Action名称

2014-12-02 18:30 211 查看
使用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"];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: