我有一个API方法接受从Dictionary<string, object>
属性返回的HttpActionExecutedContext.ActionContext.ActionArguments
(在WebApi操作过滤器中使用)。我需要在MVC动作过滤器中从ActionExecutedContext
构造一个类似的字典,以便我也可以使用来自mvc过滤器的相同API调用。
我尝试了几种方法,但它们并不是非常明确的。如果有很简单的方法从ActionExecutedContext构造actionArguments字典,请告诉我。
//webapi - working fine
public override void OnActionExecuted(HttpActionExecutedContext context)
{
Call_A(context.ActionContext.ActionArguments)
}
//mvc- need to find a way to get argument dictionary
public override void OnActionExecuted(ActionExecutedContext context)
{
Call_A(context.?)
}
答案 0 :(得分:3)
不确定OnActionExecuted
是否存在,但OnActionExecuting
肯定存在。如果你确实需要它执行(如果它不存在,我不认为它),那么你可以暂时将它存储在过滤器中,例如:
public IDictionary<string, object> actionParams { get; set; }
public override void OnActionExecuting(ActionExecutingContext context)
{
this.actionParams = context.ActionParameters;
}
public override void OnActionExecuted(ActionExecutedContext context)
{
foreach (var param in this.actionParams) {
// param.Key
// param.Value
}
}