是否可以在Action Filter中修改Web Api参数(FromUri)?

时间:2018-04-05 10:47:08

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

我的Web API接收一个由(DateTime)dateFrom,(DateTime)dateTo组成的param对象。

目前我在API入口函数中预处理参数,这在整个API中都是重复的。

我希望我可以在参数进入API输入功能之前访问并修改

所以我有下面的动作过滤器:

public class MyActionParamFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        // pre-processing
        object param;
        object param2;
        actionContext.Request.Properties.TryGetValue("dateFrom", out param);
        actionContext.ActionArguments.TryGetValue("dateFrom", out param2);
    }
}

enter image description here

从图像中可以清楚地看出,我已将参数传递给API。但我不知道为什么paramparam2为空...

有可能实现吗?

1 个答案:

答案 0 :(得分:0)

最后我按照这里的答案: Change webapi controller action parameter in delegatinghandler

从技术上讲,它是修改actionContext.ActionArguments

但我不太确定这是“最佳做法”还是其他什么。如果你认为我的设计方向错误,请告诉我你的想法。