ActionExecutedContext中的ActionDescriptor.ActionParameters

时间:2012-05-03 09:22:54

标签: c# asp.net-mvc asp.net-mvc-3 model-view-controller

ActionExecutingContext's ActionDescriptor.ActionParameters类中有ActionExecutedContext属性吗?

我需要在此阶段调查操作的参数(OnActionExecuted)。

3 个答案:

答案 0 :(得分:6)

您可以像这样获取参数和值:

// Format the parameters based on our requirements: 
StringBuilder parameters = new StringBuilder();
foreach (var p in filterContext.ActionDescriptor.GetParameters())
{
     if (filterContext.Controller.ValueProvider.GetValue(p.ParameterName) != null)
     {
           parameters.AppendFormat("\r\n\t{0}\t\t:{1}", p.ParameterName,
                       filterContext.Controller.ValueProvider.GetValue(p.ParameterName).AttemptedValue);
     }
}

答案 1 :(得分:0)

您想要ActionExecutedContext.ActionDescriptor.GetParameters()方法吗? AFAIK没有这样的ActionDescriptor.ActionParameters属性。是因为在您的代码中有一个派生类ActionDescriptor

答案 2 :(得分:0)

你可以在OnActionExecuting方法中获得价值:

public override void OnActionExecuting(ActionExecutingContext filterContext)
{    
  var parameters = filterContext.ActionDescriptor.GetParameters();
  if (parameters.Length >= 1)
  {
    var p = parameters[0];
    var val = filterContext.ActionParameters[p.ParameterName];
    Type type = p.ParameterType;
  }
}