将变量从web api控制器方法传递到过滤器

时间:2014-08-01 13:58:30

标签: asp.net asp.net-web-api action-filter

我想将appId变量值发送到过滤器

// GET api/filter
[CustomFilter]
public IEnumerable<string> Get()
{

   var  appId = 123;
    return new string[] { "value1", "value2" };
}

我可以使用OnActionExecuting或OnActionExecuted方法

public override void OnActionExecuting(HttpActionContext actionContext)
{
            base.OnActionExecuting(actionContext);

           //here i want to access appId value

}

我知道如何使用querystring

访问参数值

1 个答案:

答案 0 :(得分:2)

从控制器操作方法中,在请求对象的Properties字典中设置值,如下所示:Request.Properties["AppId"] = 123;

在过滤器的OnActionExecuted方法中,按照以下方式检索:actionContext.Request.Properties["AppId"]

顺便说一句,如果在action方法中设置了值,则必须使用过滤器的OnActionExecuted方法。 OnActionExecuting方法在执行操作方法之前运行。