在Web中传递给POST的JSON字符串api-cant绑定多个参数错误

时间:2014-04-13 10:25:10

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

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

这是我的JSON字符串。

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

我已经在JSONLint.com上验证了这个字符串,它说好了。

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

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

My Web api Post方法。

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

请帮忙。

1 个答案:

答案 0 :(得分:2)

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类型参数并逐个读取参数。 / p>

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