【问题标题】:Pass Obj list ajax call to controller mvc 4 , it show null always将 Obj 列表 ajax 调用传递给控制器​​ mvc 4,它总是显示为 null
【发布时间】:2016-03-29 18:12:15
【问题描述】:

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

这是我的代码 AJAX 调用..

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

请帮我解决问题

【问题讨论】:

  • 这是我绑定的对象 var SkillItems= new Object(); var length = $('#tbl-skill .row-val').length; for (var i = length; i ' + count + ' ' + LPN_Skills[i].Title + ' '); }

标签: jquery ajax asp.net-mvc


【解决方案1】:

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

$.ajax 语句中尝试做:

        url: '@Url.Action("CreateBlockUnit", "LPN_BlockPlan")',
        data: JSON.stringify( SkillItems ),
        success: function () {

编辑:我已更改数据部分以反映 Stephen Muecke 给出的正确答案。

【讨论】:

    【解决方案2】:

    您的控制器方法接受List&lt;LPN_Skills&gt;,因此您需要创建一个对象数组并发布它

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

    【讨论】:

      【解决方案3】:

      删除这一行:

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

      直接用,试试

      data: {SkillItems :SkillItems},
      

      【讨论】:

        猜你喜欢
        • 2015-09-03
        • 2021-11-02
        • 1970-01-01
        • 2016-10-13
        • 1970-01-01
        • 1970-01-01
        • 2017-04-20
        • 1970-01-01
        • 2017-05-08
        相关资源
        最近更新 更多