我有一個類,像這樣:數據不傳遞給控制器對象
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}
這些名稱與我的模型完全相同,但控制器仍然不接受它。我實際上可以手動讓控制器接收不同的值,但我想將它作爲對象發送。
它只是'data:data', –
您需要在控制器的EditItem動作中使用動詞[HttpPost]。而且對於ajax文章,您需要將標題內容類型作爲application/json – Shahbaz
謝謝Stephen。 – Ibanez1700