2017-02-13 7 views
0

Пожалуйста, будьте осторожны со мной. Я не эксперт.ajax post .net web api параметр null

Im не вывешивать действительный JSON (проверенную)

{ 
"Stats": [{ 
    "userName": "sadf", 
    "id": "128", 
    "score": "7" 
}, { 
    "userName": "fa", 
    "id": "417", 
    "score": "3" 
}] 
} 



// POST api/comment 
public void Post(List<Stat> Stats) 
{ 
    string break= "Breakpoint here"; 
} 


public class Stat 
{ 
public string userName { get; set; } 
public string id { get; set; } 
public string score { get; set; } 
} 

Независимо от того, что тогда я только получаю Статистика == NULL в пост (Список статистика)

Это Javascript код:

var stats = [{ "userName": "sadf" }, 
       { "userName": "fa" }]; 

     $.ajax({ 
      type: "POST", 
      url: "http://localhost:56887/api/comment", 
      data: JSON.stringify({ Stats: stats }), 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (data) { 
       $.each(stats, function (k, v) { 
        alert(v.position); 
       }); 
      }, 
      failure: function (errMsg) { 
       alert(errMsg); 

      } 
     }); 

Любая идея, что не так?

+1

Вам необходимо добавить атрибут [FromBody] к методу. См. Этот ответ http://stackoverflow.com/a/10986030/3279876 – Sami

+0

Я уже пробовал это безрезультатно. –

+1

В этом случае укажите весь почтовый индекс ajax. – Sami

ответ

1

Вам нужна модель представления, которая будет соответствовать этой JSON структуру:

public class MyViewModel 
{ 
    public IList<Stat> Stats { get; set; } 
} 

, что ваши действия контроллера будет принимать в качестве параметра:

public void Post(MyViewModel model) 
{ 
    // model.Stats will contain the desired collection here 
} 

Если вы хотите связать непосредственно с List<Stat> тогда все вам нужно избавиться от свойства Stats, которое вы искусственно представляете при нарезке:

data: JSON.stringify(stats), 

Также вы можете пересмотреть этот параметр dataType: "json",, особенно если действие вашего контроллера равно void и ничего не возвращает в тот момент, который явно не прав, и это не значит, что сигнатуры подписи контроллера должны выглядеть в ASP.NET Web API.

+0

данные: JSON.stringify (статистика), Это и сделал трюк. Огромное спасибо. –

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

  • Нет связанных вопросов^_^