Jonathan
Jonathan

Reputation: 107

knockout with asp.net mvc 4 part of the model is posted as null

I'm having an issue with a knockout model being posted back to the server using asp.net mvc.

The model in question is:

public class Objetivo
{
    public int Id { get; set; }
    public int LocalId { get; set; }
    public DateTime Mes { get; set; }

    List<ObjetivoItem> Turno1 { get; set; }
    List<ObjetivoItem> Turno2 { get; set; }
    List<ObjetivoItem> Unico { get; set; }
}

public class ObjetivoItem
{
    public string Dia { get; set; }
    public decimal Total { get; set; }
}

and I have that as a knockout vm:

self.Id = ko.observable(0);
self.LocalId = ko.observable(MEL.Objetivos.local.Id);
self.Mes = ko.observable(MEL.Objetivos.start);

self.Turno1 = ko.observableArray([]);
self.Turno2 = ko.observableArray([]);
self.Unico = ko.observableArray([]);

The post I'm making to the server is as follows:

$.ajax({
    url: "/Objetivos/Create",
    type: "POST",
    contentType: 'application/json; charset=utf-8',
    data: ko.toJSON(self),
    success: function (result) {
    }
});

And this is the response I get on the server.

model binder not complete

The model is being filled correctly on the page, I'm making sure the lists are all full.

{"Id":0,"LocalId":35,"Mes":"01/12/2013","Turno1":[{"Dia":"01/12/2013","Total":"0.00"},{"Dia":"02/12/2013","Total":"0.00"},{"Dia":"03/12/2013","Total":"0.00"},{"Dia":"04/12/2013","Total":"0.00"},{"Dia":"05/12/2013","Total":"0.00"},{"Dia":"06/12/2013","Total":"0.00"},{"Dia":"07/12/2013","Total":"0.00"},{"Dia":"08/12/2013","Total":"0.00"},{"Dia":"09/12/2013","Total":"0.00"},{"Dia":"10/12/2013","Total":"0.00"},{"Dia":"11/12/2013","Total":"0.00"},{"Dia":"12/12/2013","Total":"0.00"},{"Dia":"13/12/2013","Total":"0.00"},{"Dia":"14/12/2013","Total":"0.00"},{"Dia":"15/12/2013","Total":"0.00"},{"Dia":"16/12/2013","Total":"0.00"},{"Dia":"17/12/2013","Total":"0.00"},{"Dia":"18/12/2013","Total":"0.00"},{"Dia":"19/12/2013","Total":"0.00"},{"Dia":"20/12/2013","Total":"0.00"},{"Dia":"21/12/2013","Total":"0.00"},{"Dia":"22/12/2013","Total":"0.00"},{"Dia":"23/12/2013","Total":"0.00"},{"Dia":"24/12/2013","Total":"0.00"},{"Dia":"25/12/2013","Total":"0.00"},{"Dia":"26/12/2013","Total":"0.00"},{"Dia":"27/12/2013","Total":"0.00"},{"Dia":"28/12/2013","Total":"0.00"},{"Dia":"29/12/2013","Total":"0.00"},{"Dia":"30/12/2013","Total":"0.00"},{"Dia":"31/12/2013","Total":"0.00"}],"Turno2":[{"Dia":"01/12/2013","Total":"0.00"},{"Dia":"02/12/2013","Total":"0.00"},{"Dia":"03/12/2013","Total":"0.00"},{"Dia":"04/12/2013","Total":"0.00"},{"Dia":"05/12/2013","Total":"0.00"},{"Dia":"06/12/2013","Total":"0.00"},{"Dia":"07/12/2013","Total":"0.00"},{"Dia":"08/12/2013","Total":"0.00"},{"Dia":"09/12/2013","Total":"0.00"},{"Dia":"10/12/2013","Total":"0.00"},{"Dia":"11/12/2013","Total":"0.00"},{"Dia":"12/12/2013","Total":"0.00"},{"Dia":"13/12/2013","Total":"0.00"},{"Dia":"14/12/2013","Total":"0.00"},{"Dia":"15/12/2013","Total":"0.00"},{"Dia":"16/12/2013","Total":"0.00"},{"Dia":"17/12/2013","Total":"0.00"},{"Dia":"18/12/2013","Total":"0.00"},{"Dia":"19/12/2013","Total":"0.00"},{"Dia":"20/12/2013","Total":"0.00"},{"Dia":"21/12/2013","Total":"0.00"},{"Dia":"22/12/2013","Total":"0.00"},{"Dia":"23/12/2013","Total":"0.00"},{"Dia":"24/12/2013","Total":"0.00"},{"Dia":"25/12/2013","Total":"0.00"},{"Dia":"26/12/2013","Total":"0.00"},{"Dia":"27/12/2013","Total":"0.00"},{"Dia":"28/12/2013","Total":"0.00"},{"Dia":"29/12/2013","Total":"0.00"},{"Dia":"30/12/2013","Total":"0.00"},{"Dia":"31/12/2013","Total":"0.00"}],"Unico":[{"Dia":"01/12/2013","Total":"1.00"},{"Dia":"02/12/2013","Total":"2.00"},{"Dia":"03/12/2013","Total":"3.00"},{"Dia":"04/12/2013","Total":"4.00"},{"Dia":"05/12/2013","Total":"5.00"},{"Dia":"06/12/2013","Total":"6.00"},{"Dia":"07/12/2013","Total":"7.00"},{"Dia":"08/12/2013","Total":"8.00"},{"Dia":"09/12/2013","Total":"9.00"},{"Dia":"10/12/2013","Total":"10.00"},{"Dia":"11/12/2013","Total":"11.00"},{"Dia":"12/12/2013","Total":"12.00"},{"Dia":"13/12/2013","Total":"13.00"},{"Dia":"14/12/2013","Total":"14.00"},{"Dia":"15/12/2013","Total":"15.00"},{"Dia":"16/12/2013","Total":"16.00"},{"Dia":"17/12/2013","Total":"17.00"},{"Dia":"18/12/2013","Total":"18.00"},{"Dia":"19/12/2013","Total":"19.00"},{"Dia":"20/12/2013","Total":"20.00"},{"Dia":"21/12/2013","Total":"210.00"},{"Dia":"22/12/2013","Total":"22.00"},{"Dia":"23/12/2013","Total":"23.00"},{"Dia":"24/12/2013","Total":"24.00"},{"Dia":"25/12/2013","Total":"25.00"},{"Dia":"26/12/2013","Total":"26.00"},{"Dia":"27/12/2013","Total":"27.00"},{"Dia":"28/12/2013","Total":"28.00"},{"Dia":"29/12/2013","Total":"29.00"},{"Dia":"30/12/2013","Total":"30.00"},{"Dia":"31/12/2013","Total":"31.00"}]} 

Any ideas?

This is the request I'm sending to the server request

Upvotes: 3

Views: 139

Answers (1)

Karl Anderson
Karl Anderson

Reputation: 34846

In your ASP.NET MVC model, make all your properties explicitly public, like this:

public class Objetivo
{
    public int Id { get; set; }
    public int LocalId { get; set; }
    public DateTime Mes { get; set; }

    public List<ObjetivoItem> Turno1 { get; set; }
    public List<ObjetivoItem> Turno2 { get; set; }
    public List<ObjetivoItem> Unico { get; set; }
}

Upvotes: 2

Related Questions