Reputation: 2055
My parameter KontrolkaSamTekstLista get null data to controller ActionResult KontrolkaSubmit() but all send action to ajax looks okay.
Class
using System.Collections.Generic;
namespace Modul_Stypendia.Kontrolki
{
public class KontrolkaSamTekst
{
public int Id { get; set; }
public int Kolejnosc { get; set; }
public string Tekst { get; set; }
public int Wypelnia { get; set; }
public List<string> Przyklad { get; set; }
}
}
here list is empty IMPORTANT
[HttpPost]
public ActionResult KontrolkaSubmit(List<KontrolkaSamTekst> KontrolkaSamTekstLista)
{
System.Threading.Thread.Sleep(2000);
return Json(new { msg = "Successfully added " + KontrolkaSamTekstLista[0].Tekst });
}
Ajax
$("#waznyTest").click(function () {
var KontrolkaSamTekst = {
Id: idDane,
Kolejnosc: kolejnoscDane,
Tekst: tekstDane,
Wypelnia: wypelniaDane,
Przyklad: przykladDane
}
KontrolkaSamTekstLista = [];
KontrolkaSamTekstLista.push(KontrolkaSamTekst);
KontrolkaSamTekstLista.push(KontrolkaSamTekst);
KontrolkaSamTekstLista.push(KontrolkaSamTekst);
$.ajax({
url: '@Url.Action("KontrolkaSubmit", "styStypendia")',
dataType: 'json',
data: {
KontrolkaSamTekstLista: KontrolkaSamTekstLista
},
type: 'post',
traditional: true,
async: false,
success: function (data) {
$('#target').html(data.msg);
}
});
});
sent data looks okay
sent data
CORRECT ANSWER
$.ajax({
url: '/styStypendia/KontrolkaSubmit',
type: 'POST',
async: false,
contentType: "application/json; charset=utf-8",
data: JSON.stringify(KontrolkaSamTekstLista)
});
the best example link
Upvotes: 1
Views: 697
Reputation: 28737
You need to stringify your data, and not pass in an object, but the array directly:
$.ajax({
url: '@Url.Action("KontrolkaSubmit", "styStypendia")',
contentType: "application/json; charset=utf-8",
data: JSON.stringify(KontrolkaSamTekstLista),
type: 'post',
async: false,
success: function (data) {
$('#target').html(data.msg);
}
Upvotes: 3
Reputation: 7854
Your AJAX method should look like this
$("#waznyTest").click(function () {
var KontrolkaSamTekst = {
Id: idDane,
Kolejnosc: kolejnoscDane,
Tekst: tekstDane,
Wypelnia: wypelniaDane,
Przyklad: przykladDane
}
KontrolkaSamTekstListaC = [];
KontrolkaSamTekstListaC.push(KontrolkaSamTekst);
KontrolkaSamTekstListaC.push(KontrolkaSamTekst);
KontrolkaSamTekstListaC.push(KontrolkaSamTekst);
$.ajax({
url: '@Url.Action("KontrolkaSubmit", "styStypendia")',
dataType: 'json',
data: JSON.stringify(KontrolkaSamTekstLista), // CHANGED
type: 'post',
traditional: true,
async: false,
success: function (data) {
$('#target').html(data.msg);
}
});
});
Upvotes: 2