2010-03-03 11 views
6

Ich bin glücklich, was die RenderAction() Funktion tut. Ich möchte jedoch das Laden und Speichern von Daten in der teilweise gerenderten Aktion aufheben, sodass alles auf einer Seite erfolgt.ASP.NET MVC - Ajaxified RenderAction

Stellen Sie sich den folgenden Fall vor: Ich habe eine Artikeldetailansicht, in der unter dem Inhalt des Artikels der Link "Kommentar hinzufügen" angezeigt wird. Wenn Sie darauf klicken, wird unter dem Inhalt des Posts ein Kommentarformular angezeigt. Der Benutzer sollte in der Lage sein, das Kommentarfeld zu füllen und die Daten zu senden, ohne die gesamte Ansicht zu aktualisieren, sondern nur die teilweise wiedergegebene Aktion. Außerdem muss die Ansicht mehrere Kommentare enthalten, die in derselben Sitzung hinzugefügt werden (mehrere AJAX-Aufrufe an RenderAction()).

Was ist der beste Weg, um das zu erreichen?

Antwort

13

Aktion:

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

Ausblick:

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

JavaScript:

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

, dass die Grundlagen ist. Sie können dies so kompliziert wie Sie möchten.

+0

Was ist mit dem Einreichen der Kommentare Daten? Wird das "innerhalb" der Artikelansicht passieren, ohne die Seite zu aktualisieren? – xantrus

+0

Um die Kommentardaten zu senden, einfach ein Formular "POST" synchron oder asynchron. Du könntest ein Formular pro Kommentar haben, wenn du willst, wenn du es in deinen Teil ziehst. Wenn Sie nicht möchten, dass die Seite aktualisiert wird, senden Sie das Formular "POST" asynchron und aktualisieren Sie die Seite (entfernen Sie den Editor und fügen Sie ein "div" mit dem Kommentar hinzu) in JavaScript. –