c# - 如何在同一网址上使用 [FromBody] 和 [FromForm]?

标签 c# asp.net-core .net-core asp.net-core-webapi asp.net-core-2.1

<分区>

客户端可以向我发送JSONapplication/x-www-form-urlencoded 格式的数据。我如何在不分离不同网址的情况下处理此请求?我试过两种情况。它不起作用; 案例一:

[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;
    }
}

最佳答案

为什么不直接手动读出值?

例如

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

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

关于c# - 如何在同一网址上使用 [FromBody] 和 [FromForm]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52055886/

相关文章:

C# 访问 IEnumerable 集合

c# - 运行Blazor网站时出现版式错误

jQuery 在 ASP.NET Core 2.2 Razor View 中不可用

c# - .Net Core 为不同的构建配置启动

C# - 获取源代码文件正在使用或引用的类型列表

c# - 异常 "There is no ViewData item of type ' IEnumerable<SelectListItem>"MVC

c# - 如何在 asp.net 应用程序中从 jquery 设置 HttpPost 端点

c# - 在 ASP.NET Core WebApplicationFactory 中覆盖 EF Core DbContext

.net - 在 .Net Core 2.0 上获取网络成本的最佳方法

c# - System.Environment.OSVersion .NET Core 5.0 Framework 替代品?