C# 在ActionArguments上添加参数

C# 在ActionArguments上添加参数,c#,asp.net-mvc,custom-action-filter,C#,Asp.net Mvc,Custom Action Filter,我想在Actionarguments上添加一个参数,以便绑定我的对象,但该对象始终为null且属性未绑定,为什么 也许是因为那是一个GET而不是一个POST?有一个解决办法吗 动作过滤器 public class CustomizedFilter : ActionFilterAttribute { /// <summary> /// OnActionExecuting /// </summary> /// <param name="a

我想在Actionarguments上添加一个参数,以便绑定我的对象,但该对象始终为null且属性未绑定,为什么

也许是因为那是一个GET而不是一个POST?有一个解决办法吗

动作过滤器

public class CustomizedFilter : ActionFilterAttribute
{
    /// <summary>
    /// OnActionExecuting
    /// </summary>
    /// <param name="actionContext"></param>
    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        actionContext.ActionArguments.Add("Parameter", "Value");
    }
}
输入对象

        public class InputObject
        {
          public string Parameter{get;set;}
        }

这是因为模型绑定已经发生了。因此,您需要为InputObject实现自定义模型绑定器。或者你可以写一些类似的东西:

public override void OnActionExecuting(HttpActionContext actionContext)
 {
  if (actionContext.ActionArguments.ContainsKey("value") && actionContext.ActionArguments["value"] is InputObject)
  {
    var val = actionContext.ActionArguments["value"] as InputObject;
    val.Parameter = "value";
  }

  base.OnActionExecuting(actionContext);
}

嗨,Oleg,谢谢你的快速响应,但这不是我要找的,因为我会收到不同的键和值,输入对象也会不同,我想创建一些动态的东西,可以将Json映射到InputObjectso,然后自定义模型绑定器是你的选择
public override void OnActionExecuting(HttpActionContext actionContext)
 {
  if (actionContext.ActionArguments.ContainsKey("value") && actionContext.ActionArguments["value"] is InputObject)
  {
    var val = actionContext.ActionArguments["value"] as InputObject;
    val.Parameter = "value";
  }

  base.OnActionExecuting(actionContext);
}