我无法将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; }
}
请帮我解决问题
答案 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},