2014-10-24 3 views
1

На HTML:Передача объекта из Jquery Аякса WebAPI приводит к нулю

<div> 
    <button onclick="clicker()">Click Me!</button> 
</div> 

<script type="text/javascript"> 
    function clicker() { 
     var data = { 
      id: 1, 
      name: 'julius' 
     }; 

     $.ajax({ 
      type: 'POST', 
      url: '/api/test/', 
      data: JSON.stringify(data), 
      contentType: "application/json; charset=utf-8" 
     }); 
    } 
</script> 

на контроллере:

public class TestController : ApiController 
{ 
    public void Post([FromBody]string value) 
    { 
     Console.WriteLine(); 
    } 
} 

Значение переменной «значение» на контроллере равна нулю, хотя , Я передаю данные на вызов ajax. Может кто-нибудь объяснить, почему это происходит?

ответ

2

Вместо того, чтобы пытаться получить размещенное содержимое в виде строки, создать объект, который инкапсулирует свойства, которые вы публикуете:

public class Data 
{ 
    public int id { get; set; } 
    public string name { get; set; } 
} 

, а затем изменить свой контроллер:

public class TestController : ApiController 
{ 
    public void Post(Data value) 
    { 
     int id = value.id; 
     string name = value.name; 
    } 
} 

Если вы действительно хочу получить опубликованные данные в виде строки. Это сообщение в блоге Darrel Miller может помочь:

Posting raw JSON to Web API.

+0

Спасибо, Джон за идею обмена и сообщение в блоге! знак равно – gulp

Смежные вопросы