【问题标题】:JSON string passing to POST in web api - cant bind Multiple parameters errorJSON字符串在Web api中传递给POST - 无法绑定多个参数错误
【发布时间】:2014-04-13 10:25:10
【问题描述】:

我将两个复杂参数传递给 Web Api Post 方法并收到错误“无法绑定多个参数”。我正在使用 fiddler 对其进行测试并使用 composer 发送 JSON 字符串。

这是我的 JSON 字符串。

{"agentEntity":[{"AgentID":"1","ClientID":"1"}],"userEntity":[{"ClientID":"1","UserID":"1"}]}

我已经在 J​​SONLint.com 上验证了这个字符串,它说 OK。

当我用一个参数编写 POST 方法并传递下面的字符串时,它可以正常工作。

{"agentEntity":[{"AgentID":"1","ClientID":"1"}]}

我的 Web api Post 方法。

public OperationStatus Post(AgentEntity agentEntity, UserEntity userEntity)
    {...
}

请帮忙。

【问题讨论】:

    标签: asp.net json asp.net-web-api fiddler


    【解决方案1】:

    Web API 不处理多个发布的内容值,您只能将单个内容值发布到 Web API Action 方法。您可以阅读here 参数绑定的工作原理。

    但是,有一些解决方法:

    • 使用单个参数

    创建一个包含所有要传递的参数的模型,例如 PostRequest

    public OperationStatus Post(PostRequest request)
    {
       ...
    }
    
    • 使用JObject

    由于 asp.net Web Api 现在使用 JSON.NET 作为其 JSON 序列化程序,因此您可以使用 JObject 类来接收和解析动态 JSON 结果

    public OperationStatus Post(JObject data) 
    {
     ...
    }
    
    • 使用 FormDataCollection

    您可以使用 .Get().GetValues() 方法(用于多选值)手动定义 FormDataCollection 类型参数和读取参数。

    public OperationStatus Post(FormDataCollection data)
    {
    ...
    }
    

    【讨论】:

      猜你喜欢
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-04
      • 2021-11-25
      • 2012-10-05
      相关资源
      最近更新 更多