J'essaye de créer des actions de contrôleur qui renverront JSON ou html partiel selon un paramètre. Quelle est la meilleure façon d'obtenir le résultat renvoyé sur une page MVC de manière asynchrone?
ajax
asp.net-mvc
json
asp.net-ajax
NathanD
la source
la source
Je pense que vous devriez considérer les AcceptTypes de la demande. Je l'utilise dans mon projet actuel pour renvoyer le type de contenu correct comme suit.
Votre action sur le contrôleur peut le tester comme sur l'objet de requête
Vous pouvez ensuite implémenter l'aspx de la vue pour répondre au cas de réponse partielle xhtml.
Ensuite, dans jQuery, vous pouvez le récupérer en passant le paramètre type comme json:
J'espère que cela aide James
la source
Une autre façon intéressante de traiter les données JSON est d'utiliser la fonction JQuery getJSON. Vous pouvez appeler le
Méthode de la méthode jquery getJSON par simplement ...
la source
return Json(new {foo="bar", baz="Blech"});
fait!J'ai trouvé quelques problèmes lors de l'implémentation des appels MVC ajax GET avec JQuery qui m'ont causé des maux de tête, donc partager des solutions ici.
JsonRequestBehavior.AllowGet
; sans ce MVC renvoyait une erreur HTTP 500 (avecdataType: json
spécifié sur le client).cache: false
à l'appel $ .ajax, sinon vous obtiendrez finalement des réponses HTTP 304 (au lieu des réponses HTTP 200) et le serveur ne traitera pas votre demande.Exemple de JQuery:
Exemple de code MVC:
la source
Pour répondre à l'autre moitié de la question, vous pouvez appeler:
lorsque vous souhaitez renvoyer du HTML partiel. Vous n'aurez qu'à trouver un moyen de décider si la demande veut JSON ou HTML, peut-être en fonction d'une partie / paramètre d'URL.
la source
Solution alternative avec cadre d'encodage
Action return json
Manette
Page rasoir
Action retour html
Manette
Page rasoir
la source
Vous voudrez peut-être jeter un œil à cet article très utile qui le couvre très bien!
Je pensais juste que cela pourrait aider les gens à rechercher une bonne solution à ce problème.
http://weblogs.asp.net/rashid/archive/2009/04/15/adaptive-rendering-in-asp-net-mvc.aspx
la source
PartialViewResult et JSONReuslt héritent de la classe de base ActionResult. donc si le type de retour est décidé dynamiquement, déclarer la sortie de la méthode comme ActionResult.
la source
Pour les personnes qui ont mis à niveau vers MVC 3, voici une façon intéressante d'utiliser MVC3 et Json
la source
la source
Approche flexible pour produire différentes sorties en fonction de la demande
La
Request.IsAjaxRequest()
méthode est assez simple: elle vérifie simplement les en-têtes HTTP pour la demande entrante pour voir si la valeur de l'en-tête X-Requested-With estXMLHttpRequest
, qui est automatiquement ajoutée par la plupart des navigateurs et des frameworks AJAX.Méthode d'extension personnalisée pour vérifier si la demande concerne json ou non afin que nous puissions l'appeler de n'importe où, tout comme la méthode d'extension Request.IsAjaxRequest ():
Source: https://www.safaribooksonline.com/library/view/programming-aspnet-mvc/9781449321932/ch06.html#_javascript_rendering
la source