MVC 3 - Wie geben Sie eine Anzeigevorlage von einer Aktionsmethode zurück?

8

Ich habe eine Ansicht, die eine Liste von Kommentaren anzeigt. Dies geschieht über das DisplayTemplate. Alles was ich tun muss ist etwas wie @Html.DisplayFor(x => x.BlogPost.PostComments) und alle Kommentare werden entsprechend dargestellt.

Unten auf der Seite befindet sich ein Formular, um einen neuen Kommentar hinzuzufügen. Diese Seite verwendet progressive Verbesserung. Wenn JavaScript deaktiviert ist, wird das Formular wie üblich übergeben, der Kommentar zur Datenbank hinzugefügt und dann zu der Aktion umgeleitet, die den Blog-Beitrag rendert. Wenn jedoch Javascript verfügbar ist, entführt jQuery das Senden des Formulars und macht den Beitrag über Ajax. Gut, weil das Kommentar-Markup in einer Display-Vorlage ist, weiß ich nicht, wie ich es von der Aktionsmethode zurückgeben soll, damit jQuery es auf die Seite fallen lassen kann.

Ich weiß, wie man das mit Teilansichten macht. Ich würde nur die Action-Methode die rechte Teilansicht zurückgeben und jquery würde die Antwort an den Kommentar-Container auf der Seite anhängen.

Bevor ich meine Display-Vorlage zugunsten einer Teilansicht ausschneide, gibt es einen direkten Weg, den ich vermisse, um eine Display-Vorlage vom Controller zurückzusenden?

Hier ist meine Aktionsmethode:

%Vor%

Wenn die Seite geladen wird, muss sie sich nicht darum kümmern, da sie die Vorlagen wie üblich verwendet:

%Vor%

Ich möchte nur wissen, wie ich einen einzelnen Kommentar senden könnte, der die Anzeigevorlage wieder in jQuery verwendet.

    
Chev 17.03.2011, 18:09
quelle

3 Antworten

2

Bietet diese Frage Ihnen, wonach Sie suchen? Scheint anzuzeigen, dass Sie einen HTML-Helfer von einer Aktion aufrufen können.

    
Rob West 17.03.2011, 18:27
quelle
10

Sie können versuchen, den Teil-HTML-Code zurückzugeben, der den neu geposteten Kommentar darstellt:

%Vor%

und auf der Clientseite fügen Sie diesen Kommentar dem Kommentarcontainer hinzu:

%Vor%     
Darin Dimitrov 17.03.2011 18:31
quelle
0

Erstellen Sie eine Teilansicht /Shared/DisplayTemplate.cshtml mit folgendem Rasierklingen-Code:

%Vor%

Fügen Sie dann in Ihrem Controller (oder vorzugsweise in einer Basis-Controller-Klasse) eine Methode hinzu:

%Vor%

Im Fall des OP dann:

%Vor%     
comonuirons 29.03.2011 19:07
quelle