当我在 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/