Je ne suis pas satisfait de la meilleure réponse du Joseph, au lieu de résoudre le problème correct, il a dit que ce n'était pas le bon cas d'utilisation. En fait, il existe de nombreux endroits, par exemple si vous convertissez une ancienne base de code en code ajaxifié et que vous en avez BESOIN, alors vous en avez BESOIN. En programmation, il n'y a aucune excuse car ce n'est pas seulement vous qui codez tous ses mauvais et bons développeurs et vous devez travailler côte à côte. Donc, si je ne code pas la redirection en ajax, mon collègue développeur peut me forcer à avoir une solution pour cela. Tout comme j'aime utiliser tous les sites à motifs AMD ou mvc4, et mon entreprise peut m'en éloigner pendant un an.
Alors parlons de la solution maintenant.
J'ai fait un sacré traitement des demandes et des réponses ajax et le moyen le plus simple que j'ai découvert était d'envoyer des codes d'état au client et d'avoir une fonction javascript standard pour comprendre ces codes. Si j'envoie simplement par exemple le code 13, cela peut signifier une redirection.
Donc une réponse json comme {statusCode: 13, messsage: '/ home / log-in'} bien sûr il y a des tonnes de variantes proposées comme {status: 'success', code: 13, url: '/ home / log-in ', message:' Vous êtes connecté maintenant '}
etc, donc à votre propre choix de messages standard
Habituellement, j'hérite de la classe Controller de base et je mets mon choix de réponses standard comme celle-ci
public JsonResult JsonDataResult(object data, string optionalMessage = "")
{
return Json(new { data = data, status = "success", message = optionalMessage }, JsonRequestBehavior.AllowGet);
}
public JsonResult JsonSuccessResult(string message)
{
return Json(new { data = "", status = "success", message = message }, JsonRequestBehavior.AllowGet);
}
public JsonResult JsonErrorResult(string message)
{
return Json(new { data = "", status = "error", message = message }, JsonRequestBehavior.AllowGet);
}
public JsonResult JsonRawResult(object data)
{
return Json(data, JsonRequestBehavior.AllowGet);
}
À propos de l'utilisation de $ .ajax au lieu d'Ajax.BeginForm J'adorerais utiliser Jquery ajax et je le fais, mais encore une fois, ce n'est pas à moi au monde de prendre des décisions.J'ai une application pleine d'Ajax.BeginForm et bien sûr je ne l'ai pas fait. Mais je dois vivre avec.
Il y a donc un rappel de succès dans la forme de début aussi, vous n'avez pas besoin d'utiliser jquery ajax pour utiliser les rappels Quelque chose à ce sujet ici
Ajax.BeginForm, Appelle une action, renvoie JSON, Comment accéder à l'objet JSON dans ma fonction OnSuccess JS?
Merci