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

Popular posts from this blog

c# - Update a combobox from a presenter (MVP) -

How to understand 2 main() functions after using uftrace to profile the C++ program? -

How to put a lock and transaction on table using spring 4 or above using jdbcTemplate and annotations like @Transactional? -