首页 文章

FormDataCollection在ASP.NET Core 2.1中不起作用?

提问于
浏览
0

不要使用Core 1.1或2.0进行检查 . 情况是在控制器方法中使用 FormDataCollection 作为参数,如下所示:

[Route("[controller]")]
[ApiController]
public class AuthController : ControllerBase
{
    [Route("user")]
    [HttpPost]
    public HttpResponseMessage CheckUser(FormDataCollection form)
    {
     ...
    }
}

无论是Content-Type标头,它都会返回 400 Bad Request .

但它适用于.NET Framework 4.5:

[RoutePrefix("auth")]
public class AuthController : ApiController
{
    [Route("user")]
    [HttpPost]
    public HttpResponseMessage user(FormDataCollection form)
    {
        ...
    }
}

当然我可以使用 Request.Form.TryGetValue(key, out var value) . 但是类 FormDataCollection 没有在Core中被删除,我很好奇我们可以(并且应该)使用它来获取帖子参数吗?

1 回答

  • 1

    FormDataCollection 随Microsoft.AspNetCore.Mvc.WebApiCompatShim does not have parameterless constructor 一起提供,因此这将是问题的原因 . 根据official documentation -

    为了使绑定发生,类必须具有公共默认构造函数,并且要绑定的成员必须是公共可写属性 . 当模型绑定发生时,类只会使用公共默认构造函数进行实例化,然后可以设置属性 .

相关问题