在ActionArguments上添加参数

时间:2014-11-11 17:57:48

标签: c# asp.net-mvc custom-action-filter

我想在Actionarguments上添加一个参数,以便绑定我的对象,但总是对象为null且属性没有绑定,为什么??

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

ActionFilter

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

控制器

    [HttpGet]
    [CustomizedFilter]
    public RestResult Get(InputObject value)
    {

    }

InputObject

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

1 个答案:

答案 0 :(得分:0)

那是因为模型绑定已经发生了。因此,您需要为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);
}