1

我的参数KontrolkaSamTekstLista将空数据发送到控制器ActionResult KontrolkaSubmit()但所有将操作发送到 ajax 看起来都不错。

班级

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; }

    }
}

这里列表是空的重要

[HttpPost]
        public ActionResult KontrolkaSubmit(List<KontrolkaSamTekst> KontrolkaSamTekstLista)
        {
            System.Threading.Thread.Sleep(2000);  


            return Json(new { msg = "Successfully added " + KontrolkaSamTekstLista[0].Tekst });
        }

阿贾克斯

$("#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);
        }
    });

    });

发送的数据看起来不错

在此处输入图像描述

发送数据

在此处输入图像描述

正确答案

 $.ajax({
            url: '/styStypendia/KontrolkaSubmit',
            type: 'POST',
            async: false,
            contentType: "application/json; charset=utf-8", 
            data: JSON.stringify(KontrolkaSamTekstLista)
        });

最好的示例链接

4

2 回答 2

3

您需要对数据进行字符串化,而不是传入对象,而是直接传入数组:

$.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);
        }
于 2013-05-19T11:20:23.317 回答
2

您的 AJAX 方法应如下所示

$("#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);
    }
});

});
于 2013-05-19T11:21:24.993 回答