としてコントローラに渡されていない私の見解ではデータは、私はクラスとても似ていたオブジェクト
public ActionResult EditItem(EditItem item)
{
var im = new ItemManager();
return Json(im.EditItem(item));
}
、私のようなAjaxのポストで、このスクリプトを持っていますso:
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) }
が受け入れられないのはなぜですか?
{"ItemId":4、 "ItemName": "ghjk"、 "SerialNumber": "ghjk"、 "BrandName": "ghk"、 "Quantity"これは私がconsole.log() :4、 "Description": "hdfh"、 "UserAccountId":0}
名前はすべてモデルと同じですが、コントローラーはそれを受け入れません。私は実際に手動でコントローラに差分値を受け取らせることができますが、オブジェクトとして送信したいと思います。
ちょうど 'data:data、 ' –
コントローラのEditItemアクションに動詞[HttpPost]が必要です。また、ajaxポストの場合は、ヘッダーのcontent-typeをapplication/jsonにする必要があります – Shahbaz
ありがとうスティーブン。 – Ibanez1700