2010-03-03 5 views
6

Je suis satisfait de ce que fait la fonction RenderAction(). Cependant, je voudrais ajaxify le chargement et le stockage des données dans l'action partiellement rendue, de sorte que tout se passe dans une page. Imaginez le cas suivant: J'ai une vue détaillée de l'article où il y a un lien "Ajouter un commentaire" sous le contenu de l'article. Lorsque vous cliquez dessus, un formulaire de commentaire apparaît sous le contenu de la publication. L'utilisateur doit être en mesure de remplir la boîte de commentaires, et envoyer les données sans actualiser la vue entière, juste l'action partiellement rendue. La vue doit également prévoir l'ajout de plusieurs commentaires dans la même session (plusieurs appels AJAX à RenderAction());ASP.NET MVC - Ajaxified RenderAction

Quel est le meilleur moyen d'y parvenir?

Répondre

13

Action:

[HttpGet] 
public ActionResult AddComment() 
{ 
    return PartialView(); // presumes partial view is called "AddComment" and needs no model 
          // you know what to do otherwise. 
} 

Vue:

<input type="button" value="Add Comment" onclick="addComment()" /> 

JavaScript:

function addComment() { 
    $("#comments").append("<div></div>").load("/ControllerName/AddComment"); 
} 

Ce sont les bases. Vous pouvez rendre cela aussi compliqué que vous le souhaitez.

+0

Qu'en est-il de la soumission des données de commentaires? Est-ce que cela se produira "à l'intérieur" de l'article, sans actualiser la page? – xantrus

+0

Pour soumettre les données de commentaires, juste «POST» un formulaire, de manière synchrone ou asynchrone. Vous pourriez avoir un formulaire par commentaire, si vous le souhaitez, si vous le mettez dans votre partiel. Si vous ne voulez pas que la page soit rafraîchie, alors POSTez le formulaire de façon asynchrone et mettez à jour la page (supprimez l'éditeur et ajoutez un 'div' avec le commentaire) en JavaScript. –

Questions connexes