我正在编写一个自定义ActionFilterAttribute,以便在请求到达.Net Core Web API中的操作之前处理一些业务逻辑。 (核心v1.1) 处理程序被OnActionExecuting成功命中,但我无法提取以请求正文中的JSON格式发送的数据。
我尝试过几种方式,比如读取ActionExecutingContext流体(它是空的),访问Form属性(但因为它是json,它不起作用),以及其他一些解决方案,但没有运气。< / p>
这是我的ActionFilter的代码,它是空的,因为这里的问题基本上是需要提取其数据,所以进一步的代码将无关紧要。
public class AccountRestrictionAttribute : ActionFilterAttribute
{
public override async void OnActionExecuting(ActionExecutingContext context)
{
}
}
答案 0 :(得分:0)
回答rynowak的信用,我在https://github.com/aspnet/Mvc/issues/5260
找到了模型绑定在操作过滤器之前运行,因此如果您有表单数据或[FromBody]参数,我们已经读过它。
是的,如果你在动作过滤器中,那么context.ActionArguments将包含我们创建的所有模型对象。所以如果你有:
public IActionResult Edit(int id, [FromBody] Widget widget) { }
然后context.ActionArguments [&#34; widget&#34;]将返回Widget对象。如果您尝试以通用方式执行此操作,请查看context.ActionDescriptor.Parameters - 这将包含所有参数定义和元数据。