MVC 3 AJAX Post, Liste rempli avec des Objets, mais des Objets Propriétés sont Vides

J'ai le problème suivant:

Sur un Clic de Bouton, je POSTE quelques données sur le serveur.
Mon contrôleur de l'Action ressemble à ceci:

public ActionResult Accept(List<MyViewModel> entries)
{
    //here entries HAS 2 MyViewModel-Instances in it.
    //The entries are not null, but the values of the instances are!
    //entries[0].ParamA is null
}

Où la MyViewModel ressemble à ceci:

public class MyViewModel
{
    public string ParamA { get; set; }
    public string ParamB { get; set; }
}

Et l'AJAX d'Appel est le follwing:

var myEntries = { entries: [{ ParamA: "A", ParamB: "B" }, { ParamA: "C", ParamB: "D" }] };

$.ajax({
    type: 'POST',
    url: url,
    cache: false,
    data: myEntries,
    dataType: 'text' });

Ce que j'ai déjà essayé de le faire:

  • Changé de type de données pour 'json'
  • utilisé: traditionnel: vrai
  • essayé var myEntries = JSON.stringify(...);
  • essayé var myEntries = { entrées : [JSON.stringify({ ... }), JSON.stringify({ ... })] };
  • même que ci-dessus, mais avec jQuery.param(..., true);
  • Utilisation de IEnumerable ou MyViewModel[] au lieu de la liste.
  • TOUTE combinaison de ce qui précède

Ce que je fais mal?

Merci, merci beaucoup d'avance de m'aider!

MODIFIER

Mon (Rasoir)Vue n'est pas intéressant, à ce moment, comme il n'a rien à voir avec quoi que ce soit. Je ne suis PAS à l'aide de l'un de HTML.TextBoxFor (ou similaire) des Méthodes pour remplir le myEntries-Variable. Il est en fait rempli de manière dynamique (car il ya beaucoup de conditions).
Pour l'amour de la question (et à mes propres tests), j'ai codé en dur de la variable. 🙂

Pouvez-vous poster le code de votre (Rasoir)?
De mon point de Vue n'a rien d'intéressant. Je clearified dans ma question. Voir l'ÉDITION-la Section
J'ai la réponse! Je vais poster dès que je peux (dois attendre 8 heures...)
Quelle est la réponse? 🙂
Voir ma réponse ci-dessous. (Je peux le marquer comme acceptée demain ;))

OriginalL'auteur Shion | 2012-04-11