J'utilisais un ancien exemple pour MVC2, qui utilisait un attribut [fromJson] lors de l'envoi de json à une action du contrôleur, cela fonctionnait correctement, sauf qu'il n'attrapait pas les erreurs du modèle, donc ModelState. IsValid est toujours vrai. Puis j'ai vu que poster JSON était construit en MVC3 donc j'ai mis à jour mon code. Mais maintenant j'ai un autre problème :) en utilisant:Knockout et ko.utils.postJson numéro
ko.utils.postJson(location.href, json);
La liaison ne fonctionne pas, et mon modèle est vide.
Mais si j'utilise JQuery:
$.ajax({
url: '@Url.Action("Create")',
contentType: 'application/json; charset=utf-8',
type: "POST",
data: json,
dataType: 'json',
success: function(result) {
alert("yay");
},
error: function(xhr, ajaxOptions, thrownError) {
alert(xhr.statusText + " " + xhr.responseText);
}
});
Je pense que je vais passer mon ko.utils.postJson à JQuery $ .ajax mais comment puis-je poster que je puisse faire un RedirectToAction après?
Donc, pour clarifier! l'action du contrôleur ressemble à ceci:
public ActionResult Create(QuestionViewModel questionViewModel){
if (ModelState.IsValid)
{
questionViewModel.Save();
TempData.Add(Config.MODEL, questionViewModel);
return RedirectToAction("Edit");
}
PopulateViewBag();
return View(questionViewModel);
}
J'ai trouvé ce http://groups.google.com/group/knockoutjs/browse_thread/thread/e631a544de2ad51e dans le forum knockout, ko.utils.postJson est une forme « normale » soumettre. ce qui est ce que je veux faire, donc le flux de l'application est maintenu inchangé.
Quelle est votre intention? Voulez-vous que l'appel ajax soit redirigé vers une nouvelle URL qui renvoie la réponse réelle pour l'appel ajax, OU voulez-vous que la page entière actuelle dans le navigateur soit redirigée vers une autre URL (Refreshed)? – Zasz
J'ai essayé de clarifier ci-dessus. – rafn