The below code are simplified to show the necessity. May I know what is wrong? I can't seems to retrieve two Parameters (A and B in this case) using the [FromBody] attribute.
The error message is "Can't bind multiple parameters ('A' and 'B') to the request's content"
It is perfectly fine if I have either A or B only.
Web API:
[Route("API/Test"), HttpPost]
public IHttpActionResult Test([FromBody] int A, [FromBody] int B)
Client:
HttpClient client = new HttpClient();
var content = new FormUrlEncodedContent(
new Dictionary<string, string> {
{ "A", "123" },
{ "B", "456" }
});
client.PostAsync("http://localhost/API/Test", content).Result;
Web Api doesn't support multiple [FromBody] params I think. But you can use Api model, to passing more parameters to your api action.:
public class YourApiModel
{
public int A{ get; set; }
public int B { get; set; }
//...other properties
}
After that, you can simply use this in your API controller Test:
// POST: api/test
public IHttpActionResult Post([FromBody] YourApiModel model)
{
//do something
}
Hope it help.
Try the Web API code:
[DataContract]
public class Model
{
[DataMember]
public int A { get; set; }
[DataMember]
public int B { get; set; }
}
[Route("API/Test"), HttpPost]
public IHttpActionResult Test([FromUri] Model model)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With