I have a ViewModel Like this :
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 I have controller that get SaveWorkOrderViewModel as param Like this :
[HttpPost]
public virtual JsonResult Save(SaveWorkOrderViewModel saveWorkOrderViewModel)
{
....
}
to bind data to this I tried like this :
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 , I getting null for DelayReasons.
I couldn't find any similar post to solve this .
updated :
My script for send ajax call is :
$.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 I changed scrips like this and its 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
};
SaveWorkOrderDelayReasonViewModelcontains a propertyTitle. Are you not submitting that?Titlefield .SaveWorkOrderDelayReasonViewModelbuttThe values ofDelayReasonIdwill not be bound :)