传递Obj列表ajax调用控制器mvc 4,它始终显示null

时间:2016-03-29 18:12:15

标签: jquery ajax asp.net-mvc

我无法将obj列表从ajax调用传递给控制器​​,它总是显示null 我不知道我做错了什么?

这是我的代码 AJAX CALL ..

var SkillItems= new Object();
var length = $('#tbl-skill .row-val').length;
for (var i = length; i <= length ; i++) 
{
    SkillItems[i] = ({ Skill_ID: count, Title: title, Skill_Description: desc });
    count++;
}
$("#save-unit").click(function () {
    SkillItems = JSON.stringify({ 'SkillItems': SkillItems });
    $.ajax({
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        type: 'POST',
        url: '@Url.Action("CreateBlockUnit", "LPN_BlockPlan")',
        data: SkillItems,
        success: function () {
            // $('#result').html('"PassThings()" successfully called.');
        },
        failure: function (response) {
            // $('#result').html(response);
        }
    });
}

控制器..

[HttpPost]
public void CreateBlockUnit(List<LPN_Skills> SkillItems) // this SkillItems show null always
{
    // code
}

...模型

public class LPN_Skills
{
    public int Skill_ID { get; set; }
    public string Title { get; set; }
    public string Skill_Description { get; set; }
}

请帮我解决问题

3 个答案:

答案 0 :(得分:1)

SkillItems是一种类,您试图用字符串类替换它的值。我很惊讶你没有收到错误。

$.ajax语句中尝试:

        url: '@Url.Action("CreateBlockUnit", "LPN_BlockPlan")',
        data: JSON.stringify( SkillItems ),
        success: function () {
编辑:我已更改数据部分以反映Stephen Muecke给出的正确答案。

答案 1 :(得分:0)

您的控制器方法接受List<LPN_Skills>,因此您需要创建一个对象数组并将其发布

var SkillItems = [];
SkillItems.push({ Skill_ID: count, Title: title, Skill_Description: desc });

并将ajax方法更改为

$("#save-unit").click(function () {
    $.ajax({
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        type: 'POST',
        url: '@Url.Action("CreateBlockUnit", "LPN_BlockPlan")',
        data: JSON.stringify(SkillItems),
        success: function () {
        },
        failure: function (response) {
        }
    });
}

答案 2 :(得分:-1)

删除此行:

SkillItems= JSON.Stringify({'SkillItems' :SkillItems});

直接尝试,

data: {SkillItems :SkillItems},