代码之家  ›  专栏  ›  技术社区  ›  Nodon

如何在同一个url上使用[FromBody]和[FromForm]?[重复]

  •  2
  • Nodon  · 技术社区  · 7 年前

    客户可以发送数据给我 JSON application/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;
        }
    }
    

    案例2:

    [Route ( "api/[controller]" )]
    [ApiController]
    public class FirstController : ControllerBase
    {
        [HttpPost]
        public string SomePost( [FromBody][FromForm] TestClass obj )
        {
            return obj.Prop1 + obj.Prop2;
        }
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Jamie Rees    7 年前

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

    例如

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

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