2017-09-07 8 views
-1

我有一個類,像這樣:數據不傳遞給控制器​​對象

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

在我看來,我有這樣的劇本與阿賈克斯後像所以:

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()上得到的:

{「ItemId」:4,「ItemName」:「ghjk」,「SerialNumber」:「ghjk」,「BrandName」:「ghk」,「Quantity」 :4,「Description」:「hdfh」,「UserAccountId」:0}

這些名稱與我的模型完全相同,但控制器仍然不接受它。我實際上可以手動讓控制器接收不同的值,但我想將它作爲對象發送。

+0

它只是'data:data', –

+0

您需要在控制器的EditItem動作中使用動詞[HttpPost]。而且對於ajax文章,您需要將標題內容類型作爲application/json – Shahbaz

+0

謝謝Stephen。 – Ibanez1700

回答

1

請通過

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

data: data

它並不需要另一個對象名爲項目

財產,也並不需要是JSON字符串化。我們可以直接傳遞這個對象。

+0

這不起作用 - 它只是'data:data' - 不''JSON.stringify()'! –

+0

我的壞! JSON.stringify()不起作用。更新我的答案,以便以後的讀者不會感到困惑。謝謝斯蒂芬 – Shahbaz

相關問題