MVC Retour Vue Partielle en JSON
Est-il un moyen de retourner une chaîne HTML de rendu partiel dans le cadre d'une réponse JSON à partir de MVC?
public ActionResult ReturnSpecialJsonIfInvalid(AwesomenessModel model)
{
if (ModelState.IsValid)
{
if(Request.IsAjaxRequest()
return PartialView("NotEvil", model);
return View(model)
}
if(Request.IsAjaxRequest())
{
return Json(new { error=true, message = PartialView("Evil",model)});
}
return View(model);
}
Vous devez vous connecter pour publier un commentaire.
Vous pouvez extraire le code html de chaîne à partir de la PartialViewResult objet, semblable à la réponse à ce fil:
Rendre une vue comme une chaîne de caractères
PartialViewResult et ViewResult proviennent tous deux ViewResultBase, de sorte que la même méthode devrait fonctionner sur les deux.
L'aide du code de la discussion au-dessus, vous serez en mesure d'utiliser:
RenderViewToString
méthode avecPartialViewResult
paramètre. Mais il existe aussi d'autres méthodes. L'insertion de la méthode ici serait utile.Au lieu de
RenderViewToString
je préfère une approche commeensuite, vous pouvez récupérer le résultat dans votre javascript et faire quelque chose comme
Url.Action("Evil", model)
va générer une chaîne de requête get, mais votre ajax méthode est post et qu'il va jeter statut de l'erreur 500(Erreur Interne du Serveur).va générer une chaîne de requête get, mais votre ajax méthode est post et qu'il va jeter statut de l'erreur 500(Erreur Interne du Serveur). – Fereydoon Barikzehy 14 Février à 9:51
Juste Ajouter "JsonRequestBehavior.AllowGet" sur votre objet Json.