2017-05-19 91 views
0

我正在编写自定义ActionFilterAttribute,以便在请求触及.Net Core Web API中的操作之前处理某些业务逻辑。 (Core v1.1) 处理程序被OnActionExecuting成功命中,但我无法提取以请求主体发送的JSON格式发送的数据。我试过了很多方法,比如读取ActionExecutingContext流体(空),访问Form属性(但因为它是json,它不起作用),还有一些其他的解决方案,但没有运气。从ActionFilterAttribute中的.NET Core Web API的请求正文获取JSON数据

这是我的ActionFilter的代码,它是空的,因为这里的问题基本上是需要提取其数据,所以进一步的代码将是不相关的。

public class AccountRestrictionAttribute : ActionFilterAttribute 
{ 
    public override async void OnActionExecuting(ActionExecutingContext context) 
    {  
    } 
} 

回答

0

回答归功于rynowak,我在这里找到https://github.com/aspnet/Mvc/issues/5260

ModelBinding所以如果你有表单数据或[FromBody]参数,我们已经读过它之前的动作过滤器运行。

是的,如果你在一个动作过滤器中,那么context.ActionArguments将包含我们创建的所有模型对象。所以如果你有:

public IActionResult Edit(int id, [FromBody] Widget widget) { } 

然后context.ActionArguments [“widget”]将返回Widget对象。如果你试图以通用的方式做到这一点,看看context.ActionDescriptor.Parameters - 这将包含所有的参数定义和元数据。

+0

是的,我之前发现了相同的链接,但是无论如何感谢伴侣。 – user2761172