Je récupère la plupart de mes données en tant que modèles à partir de mon application MVC et je les exploite uniquement du côté client. Quand j'en ai fini avec tout ce que fait l'utilisateur, je ne fais que renvoyer le modèle/tableau de modèles au serveur.Les modèles publiés (via jQuery) reviennent avec toutes les propriétés définies par défaut
Dans un scénario spécifique, je poste un tableau contenant deux modèles dans l'application. Je peux voir toutes les valeurs du modèle dans le HTTP ... mais quand elles sont désérialisées et passées à mon contrôleur elles sortent "vides" - c'est-à-dire, toutes les propriétés sont définies à leurs valeurs par défaut, mais la collection a deux éléments en elle.
Une idée de ce qui pourrait être la cause de cela? Il semble que MVC ne soit pas capable de désérialiser le HTTP pour les objets fortement typés, mais je ne vois pas pourquoi tout "semble" OK dans le HTTP. Y a-t-il un processus que je pourrais manquer?
Si c'est important, j'ai essayé de "recevoir" des données en tant que paramètres formels de type IList et MyModel [] ... ne semble pas aider.
difficile pour moi de trouver un code spécifique, mais ici va - peut-être cela vous aidera
// Client side
var models = new Array();
for(var i in selectedModels) {
var item = selectedModels[i];
if(typeof(item) != 'function') {
models.push(item);
}
}
$.ajax({
type: "POST",
data: { myModels: models, name: "" },
dataType: "json",
url: "/json/my-controller/create-models",
success: function (data, successCode, httpRequest) {
// Do some stuff
}
})
// Server Side
[HttpPost, ActionName("create-models")]
public ActionResult DoSomething(MyModel[] myModels)
{
if(myModels == null || myModels.Length < 1)
{
throw new InvalidOperationException("You must provide at least one model to add to the collection.");
}
// Do someother stuff...
return Json(someNewModel);
}
Blah, a été l'espoir d'éviter cette étape supplémentaire ... merci, je vais voir si cela aide demain matin. –