El enlace automático de MVC3 a la lista de objetos JSON no funciona para las propiedades

Tengo una matriz de objetos JSON que estoy publicando en un controlador MVC3. El JSON parece publicarse bien en función de la verificación de violinista que ejecuté. (incluido a continuación) El controlador acepta una configuración de clase I personalizada para recibir los datos JSON. Eso parece funcionar bien también (captura de pantalla del depurador incluida a continuación) El problema es que las propiedades del objeto no parecen vincularse automáticamente como yo esperaría. Todos los nombres coinciden, no estoy seguro del problema.

El jquery está debajo (primero haga clic para agregar a la matriz, luego haga clic para publicar los datos)

var removes = [];
var adds = [];

var transaction = {
    'adds': adds,
    'removes': removes
};

jQuery(".AddCardLink").click(function () {
            var card = [{
                Id: jQuery(this).attr("cardid"),
                Name: jQuery(this).attr("cardname")
            }];
            transaction.adds.push(card);
        })

jQuery("#btnSave").click(function () {
            jQuery.ajax({
                type: "POST",
                url: "/SaveTransactionLog",
                data: JSON.stringify(transaction),
                dataType: "json",
                contentType: "application/json",
                success: function (data) {
                   alert("Test");
                }
            });
        });

Esta es la vista de violinista de los datos enviados.

Fiddler

La clase personalizada y el controlador se encuentran a continuación:

public class Card
{
  public int Id { get; set; }
  public string Name { get; set; }
}

public class JsonTransaction
{
     public List<Card> Adds { get; set; }
     public List<Card> Removes { get; set; }
}

[HttpPost]
public JsonResult SaveTransactionLog(JsonTransaction transaction)
{ 
   return  Json()
}

Finalmente, aquí está el aspecto del depurador en JsonTransaction, puede ver que el enlace automático configura las listas correctas, pero las propiedades de la tarjeta en la lista están vacías.

enter image description here

Si te quedaste hasta el final, ¡gracias! ¡Cualquier ayuda sería genial!

preguntado el 30 de enero de 12 a las 20:01

1 Respuestas

¡Argh! Después de pasar todo el fin de semana en esto y finalmente publicar en SO ayer, ¡descubrí mi problema!

Mi Jquery Tenía un corchete adicional alrededor de mis objetos cuando los estaba agregando a través de onclick. Eliminar los corchetes resolvió mi problema.

jQuery(".AddCardLink").click(function () {
            var card = **[**{
                Id: jQuery(this).attr("cardid"),
                Name: jQuery(this).attr("cardname")
            }**]**;
            transaction.adds.push(card);
        })

Respondido el 31 de enero de 12 a las 13:01

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.