首页 > 解决方案 > 如何在同一个 url 上使用 [FromBody] 和 [FromForm]?

问题描述

客户可以向我发送数据JSONapplication/x-www-form-urlencoded格式。我如何处理这些请求而不分离到不同的 url?我试过两种情况。它不起作用;情况1:

[Route ( "api/[controller]" )]
[ApiController]
public class FirstController : ControllerBase
{
    [HttpPost]
    public string SomePostFromBody ( [FromBody] TestClass obj )
    {
        return obj.Prop1 + obj.Prop2;
    }

    [HttpPost]
    public string SomePostFromForm ( [FromForm] TestClass obj )
    {
        return obj.Prop1 + obj.Prop2;
    }
}

案例二:

[Route ( "api/[controller]" )]
[ApiController]
public class FirstController : ControllerBase
{
    [HttpPost]
    public string SomePost( [FromBody][FromForm] TestClass obj )
    {
        return obj.Prop1 + obj.Prop2;
    }
}

标签: c#asp.net-core.net-coreasp.net-core-webapiasp.net-core-2.1

解决方案


为什么不手动读出这些值?

例如

[HttpPost]
public string SomePost()
{
    // Check if it's a Form value
    if(Request.Form != null) { // do something }
    else if(Request.Body != null) { // do something }
}

注意:上面的代码可能无法编译,我只是快速写在这里。


推荐阅读