数据不作为对象传递给控制器

时间:2017-09-07 10:24:40

标签: asp.net-mvc

我有一个类似的课程:

public class EditItem
{
    public int ItemId { get; set; }
    public string ItemName { get; set; }
    public string SerialNumber { get; set; }
    public string BrandName { get; set; }
    public int? Quantity { get; set; }
    public string Description { get; set; }
    public int? UserAccountId { get; set; }
}

和像这样的控制器:

public ActionResult EditItem(EditItem item)
{
    var im = new ItemManager();
    return Json(im.EditItem(item));
}

在我看来,我有这样的脚本和ajax帖子一样:

function EditItem(obj) {
    this.ItemId = obj.ItemId;
    this.ItemName = obj.ItemName;
    this.SerialNumber = obj.SerialNumber;
    this.BrandName = obj.BrandName;
    this.Quantity = obj.Quantity;
    this.Description = obj.Description;
    this.UserAccountId = obj.UserAccountId;
}

$('#tbl_items').on('click', '.btn_edit', function () {
var $tr = $(this).closest('tr');

var itemid = $tr.find('td[data-itemid]').data('itemid');
var itemname = $tr.find('td[data-itemname]').data('itemname');
var serialnumber = $tr.find('td[data-serialnumber]').data('serialnumber');
var brandname = $tr.find('td[data-brandname]').data('brandname');
var quantity = $tr.find('td[data-quantity]').data('quantity');
var description = $tr.find('td[data-description]').data('description');

var obj = {};
obj.ItemId = itemid;
obj.ItemName = itemname;
obj.SerialNumber = serialnumber;
obj.BrandName = brandname;
obj.Quantity = quantity;
obj.Description = description;
obj.UserAccountId = 0;

 edit_item(obj);
});

function edit_item(data) {
    $.ajax({
        type: 'POST',
        url: '@Url.Action("EditItem", "Item")',
        data: { item: JSON.stringify(data) },  <===== This is not passed to the controller
        success: function(result) {
             alert("saved);
            } else {
                alert("false");
            }
        }
    });     
}

为什么我的data: { item: JSON.stringify(data) }不被我的控制器接受?这是我在console.log()上得到的:

{ “项目Id”:4 “ITEMNAME”: “ghjk”, “的SerialNumber”: “ghjk”, “名优产品”: “GHK”, “数量”:4, “描述”: “hdfh”,“UserAccountId “:0}

名称与我的模型完全相同,但控制器仍然不接受它。我实际上可以手动让控制器接收不同的值,但我想将其作为对象发送。

1 个答案:

答案 0 :(得分:1)

请传递

data: { item: JSON.stringify(data) }

data: data

它不需要具有名为item

的属性的另一个对象

并且它也不需要进行JSON字符串化。我们可以直接传递对象。