C# Web Api 2控制器方法中的访问路由和POST参数

C# Web Api 2控制器方法中的访问路由和POST参数,c#,asp.net-web-api2,C#,Asp.net Web Api2,我有一个控制器,需要访问路由和POST body参数。但是,当我使用这个实现时 public class MessageController : ApiController { [Route( "Data/Message/{apiKey}/{userId}" )] [HttpPost] public Message Post( Guid apiKey, string userId, [FromBody] string message) { //

我有一个控制器,需要访问路由和POST body参数。但是,当我使用这个实现时

public class MessageController : ApiController
{
    [Route( "Data/Message/{apiKey}/{userId}" )] 
    [HttpPost]
    public Message Post( Guid apiKey, string userId, [FromBody] string message)
    {
        // ...
    }
}
消息
参数始终为
null


如何访问所有apropos数据?

[FromBody]参数必须编码为值

不要尝试这样做:

public Message Post( Guid apiKey, string userId, [FromBody] string message)
{
    // ...
}
试试这个

 public Message Post( Guid apiKey, string userId, [FromBody] string value)
 {
    // ...
 }
并使用此类代码对jquery执行POST请求:

  $.post('YourDomain/Data/Message/{apiKey}/{userId}', { '': value });

关于更多细节,这里是链接

谢谢,它澄清了我对[FromBody]的困惑。但是,是否有一种方法可以将路由和POST数据混合在方法参数中,例如
公共消息POST(Guid apiKey、字符串userId、Models.Message Message)
其中
apiKey
userId
来自路由,并且
消息
映射了post body参数?您如何将所有参数包含到一个类中?好的,所以我实际上尝试了一下。我匆忙地证实了这一点。这是行不通的。路由参数不会与类中同名的属性绑定,更不用说路由参数+post参数了。