Използване както на маршрут, така и на POST параметри в Web Api контролера

Как мога да настроя ApiController, така че да мога да обвържа параметрите на метода както към параметризиран маршрут, така и към параметрите на заявката (в този случай POST, но и PUTs)?

Нещо от рода на

public class MessageController : ApiController
{
    public class Message
    {
       public string Content { get; set; }
       public int Priority { get; set; }
    }

    [Route( "Data/Message/{apiKey}/{userId}" )] 
    [HttpPost]
    public Message Post( Guid apiKey, string userId, Message msg)
    {
        // ...
    }
}

Така че това да работи

$.post('/Data/Message/<some key>/<some id>', { 
    Content: 'Did you receive my payment?', 
    Priority: 0 
 });

Опитах метода от Достъп route и POST параметри в Web Api 2 Controller метод за използване на клас и параметрите да са обвързани с неговите свойства, но това не работи. Параметърът просто винаги е null.


person user1569339    schedule 12.09.2014    source източник


Отговори (1)


Използвайте атрибута [FromBody]

[Route("Data/Message/{apiKey}/{userId})]
[HttpPost]
public Message Post(Guid apiKey, string userId, [FromBody] Message msg)
{
    ...
}

Тогава вашите имена на свойства на клас Message трябва да съответстват на вашия обект с данни на javascript.

var data = {
    Content: 'Did you receive my payment?',
    Priority: 0
};

$.post('/Data/Message/<some key>/<some id>', data);
person Jasen    schedule 12.09.2014