javascript - how to bind array to nested field with Jquery in ASp.NET mvc -
i have viewmodel :
public class saveworkorderviewmodel { public guid workorderid { get; set; } public list<saveworkorderdelayreasonviewmodel> delayreasons { get; set; } } public class saveworkorderdelayreasonviewmodel { public guid delayreasonid { get; set; } public string title { get; set; } } and have controller saveworkorderviewmodel param :
[httppost] public virtual jsonresult save(saveworkorderviewmodel saveworkorderviewmodel) { .... } to bind data tried :
var workorderid = $(this).data('workorderid'); // return guid var delayreasons = $("#drpdelay").select2("val"); // return array of guid var saveworkorderviewmodel = { workorderid: workorderid, delayreasons: { delayreasonid:delayreasons } }; but when post page , getting null delayreasons.
i couldn't find similar post solve .
updated :
my script send ajax call :
$.ajax({ url: '@url.action(mvc.admin.workorder.save())', data: { saveworkorderviewmodel }, type: "post", success: function (data) { showmessage(data.message, data.notificationtype); if (data.result) { refreshkendogrid('wogrid'); } }, error: function (response) { } }); finally changed scrips , work fine :
var fields = []; $(delays).each(function (index, value) { var obj = {}; obj["delayreasonid"] = value; obj["title"] = null; fields.push(obj); }); var saveworkorderviewmodel = { workorderid: workorderid, delayreasons: fields };
you need set contenttype option use json, , stringify data
.... var saveworkorderviewmodel = { workorderid: workorderid, delayreasons: fields }; $.ajax({ url: '@url.action(mvc.admin.workorder.save())', data: json.stringify(saveworkorderviewmodel), type: 'post', contenttype: 'application/json; charset=utf-8', success: function (data) { .... alternatively, use current ajax options uses default application/x-www-form-urlencoded; charset=utf-8 contenttype, need generate name/value pairs collection indexers, example (where xxxx guid values)
var saveworkorderviewmodel = { workorderid: workorderid, delayreasons[0].delayreasonid: xxxx, delayreasons[1].delayreasonid: xxxx, .... };
Comments
Post a Comment