c# - 如何将 Json 参数绑定(bind)到 ASP.NET 中的 Web Api 参数?

标签 c# asp.net json asp.net-mvc asp.net-web-api

当我在 MVC Controller 中使用此方法时

[HttpPost]
public async Task<ActionResult> MyMethod(int param1, string param2)
{
   //....
}

我可以发送一个 Json 对象 {param1:1, param2:"str"} 它工作得很好并且参数被解析。但是,当我为 WebApi 2 执行此操作时,它不起作用。因为根据以下文档示例,[FromBody] 只能由 1 个参数使用。

At most one parameter is allowed to read from the message body
    // Caution: Will not work!    
    public HttpResponseMessage Post([FromBody] int id, [FromBody] string name) { ... }

我们如何才能从 WebApi Controller 中获得与 MVC Controller 相同的行为?

编辑:创建相应的类和替换参数不是一种选择,因为消息传递工具会检查这些方法以进行维护。签名应保持不变。

最佳答案

尝试从这些值中组合一个对象:

public class Foo
{
    public int id {get;set;}
    public int name {get;set;}
}

public HttpResponseMessage Post([FromBody] Foo foo) 
{
    //some stuff...
}

如果签名应该保持不变,您可以尝试在 url 中指定参数,例如:myurl?id=1&name=Tom 仍然通过 POST 动词。

关于c# - 如何将 Json 参数绑定(bind)到 ASP.NET 中的 Web Api 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39528148/

相关文章:

c# - .NET Core cookie 身份验证与 AWS Lambda 不持久

c# - 试图加载格式不正确的程序。 Microsoft.TeamFoundation.WorkItemTracking.Client.DataStoreLoader

c# - 在 .NET 4.0 中创建可与 .NET 4.5 中的 "await"一起使用的异步方法

c# - 将数据源分配给 .net 中的 HTML 选择时属性的返回类型应该是什么

c# - 具有序列 ID 的线程安全固定大小循环缓冲区

asp.net - 表格不显示 html 页面

c# - 中等信任共享环境上的 MySql Connectors 6.7.4

java - Gson 序列化 Integer 对象

javascript - Alpaca - 当模式对象是数组类型时,如何设置布局模板?

java - jackson 没有反序列化它已经序列化的通用列表