ModelState.isvalid is false when trying to save an entity, error says a field is required in a related entity
<p>I have this code to save an entity</p>

<pre><code> public class TipoDeProducto
    {
        [Key]
        [ScaffoldColumn(false)]
        public int TipoDeProductoId{ get; set; }

        [Required]
        [MaxLength(50, ErrorMessage = "El nombre debe tener como máximo 50 caractéres")]
        public string Nombre { get; set; }

        [Required]
        public bool Estado { get; set; }

        public virtual ICollection&lt;Producto&gt; Productos { get; set; }
    }
</code></pre>

<p>and Product</p>

<pre><code> public class Producto
    {
        [Key]
        [ScaffoldColumn(false)]
        public int ProductoId { get; set; }

        public int TipoDeProductoId { get; set; }

        [Required]
        [MaxLength(50, ErrorMessage = "El nombre debe tener como máximo 50 caractéres")]
        public string NombreProducto { get; set; }

        [Required]
        [DataType(DataType.MultilineText)]
        [MaxLength(300, ErrorMessage = "La descripción debe tener como máximo 300 caractéres")]
        public string Descripcion { get; set; }

        public bool Estado { get; set; }


        [ForeignKey("TipoDeProductoId")]
        public virtual TipoDeProducto TipoDeProducto { get; set; }
    }
</code></pre>

<p>The edit (POST) is this:</p>

<pre><code>  public HttpResponseMessage PutTipoDeProducto(int id, TipoDeProducto tipoDeProducto)
        {
            if (!ModelState.IsValid)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
            }

            if (id != tipoDeProducto.TipoDeProductoId)
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }

            try
            {
                unitOfWork.TipoDeProductoRepository.Update(tipoDeProducto);
                unitOfWork.Save();
            }
            catch (DbUpdateConcurrencyException ex)
            {
                return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
            }

            return Request.CreateResponse(HttpStatusCode.OK);
        }
</code></pre>

<p>My index view is like this:</p>

<pre><code>@model List&lt;PowerData.Comisiones.Models.TipoDeProducto&gt;
    @using PowerData.Comisiones.Models
    @{
        ViewBag.Title = "Tipos de producto";
    }

    &lt;h2&gt;Tipos de producto&lt;/h2&gt;

    @(Html.Kendo().Grid&lt;TipoDeProducto&gt;()
    .Name("Grid")
    .Columns(columns =&gt;
    {
        columns.Bound(p =&gt; p.Nombre).Title("Nombre");
        columns.Bound(p =&gt; p.Estado).Title("Estado");
        columns.Command(command =&gt; { command.Edit(); });
    })
    .ToolBar(toolbar =&gt; toolbar.Create())
    .Editable(editable =&gt; editable.Mode(GridEditMode.PopUp))

    .Pageable()
    .Sortable()
    .Scrollable(scr =&gt; scr.Height(430))
    .Filterable()
    .DataSource(dataSource =&gt; dataSource
        .WebApi()
        //.Ajax()
        //.ServerOperation(false)
        .PageSize(20)
        .Events(events =&gt; events.Error("error_handler"))
        .Model(model =&gt;
        {
            model.Id(p =&gt; p.TipoDeProductoId);
            model.Field(p =&gt; p.TipoDeProductoId).Editable(false);
        })

        .Create(create =&gt; create.Url(Url.HttpRouteUrl("DefaultApi", new { controller = "TipoDeProductos" }))) // Action invoked when the user saves a new data item
                    .Read(read =&gt; read.Url(Url.HttpRouteUrl("DefaultApi", new { controller = "TipoDeProductos" }))) // Action invoked when the grid needs data
                    .Update(update =&gt; update.Url(Url.HttpRouteUrl("DefaultApi", new { controller = "TipoDeProductos", id = "{0}" })))  // Action invoked when the user saves an updated data item
                    .Destroy(destroy =&gt; destroy.Url(Url.HttpRouteUrl("DefaultApi", new { controller = "TipoDeProductos", id = "{0}" }))) // Action invoked when the user removes a data item

        //.Create(update =&gt; update.Action("Create", "TipoDeCanales"))
            //.Read(read =&gt; read.Action("Read", "TipoDeCanales"))
            //.Update(update =&gt; update.Action("Edit", "TipoDeCanales"))
            //.Destroy(update =&gt; update.Action("Delete", "TipoDeCanales"))
    )
    )
    &lt;script type="text/javascript"&gt;
        function error_handler(e) {
            if (e.errors) {
                var message = "Errors:\n";
                $.each(e.errors, function (key, value) {
                    if ('errors' in value) {
                        $.each(value.errors, function () {
                            message += this + "\n";
                        });
                    }
                });
                toastr.error(message)
                //alert(message);
            }
        }
    &lt;/script&gt;
</code></pre>

<p>However, after I add items, and then try to edit an existing row, the Model.Isvalid = false, and when I check the validation errors, it says ProductName is required, which is not even a field on the table I am trying to save, its a related list of entitties</p>