ASP.NET MVC-Vorlagen für Client und Server

8

Ist das möglich? Ein Beispiel für das, was ich erreichen möchte, ist das Facebook-Kommentierungssystem. Vorhandene Kommentare werden auf dem Server gerendert, aber wenn ich einen neuen Kommentar hinterlasse, wird er mit AJAX auf dem Client erstellt. Im Idealfall möchte ich die Vorlage für den Kommentar nur an einer Stelle speichern und auf dem Server (von Razor gerendert) und auf dem Client (in JavaScript mit vom Server zurückgegebenen JSON gerendert) zugreifen können.

Irgendwelche Ideen?

BEARBEITEN : Ich denke, eine weitere Option besteht darin, beim rein serverseitigen Rendern zu bleiben. Wenn der Benutzer einen neuen Kommentar veröffentlicht, gibt er das gerenderte HTML an den Browser zurück, um es in das DOM einzufügen. Das ist nicht ganz so schön, aber ich würde gerne wissen, ob das auch möglich ist.

    
Mike Chamberlain 31.05.2011, 11:57
quelle

3 Antworten

8

Ich würde es ablehnen, serverseitig zu rendern und es dann für Bandbreite und Leistung an Ihr JS-Skript zurückzusenden. Stattdessen sollten Sie eine Template-Engine verwenden, die sowohl auf dem Server als auch auf dem Client funktioniert. Wenn der Client die Kommentare aktualisieren möchte, fordert er nur die Daten für die Kommentare an und ersetzt dann die alten Kommentare html durch das neue html, das aus den Daten gerendert wird, wobei dieselbe Vorlage verwendet wird, die auf dem Server verwendet wird.

Ich habe Moustache Templating-Engine verwendet, um dies mit PHP und JS zu erreichen. Es gibt eine .NET-Version, die vermutlich für ASP.NET funktioniert, und ich vermute, dass Sie ASP.NET verwenden.

Also stelle ich sicher, dass ich Daten in PHP und JS auf die gleiche Weise formatiere und dann mit einer Moustache-Vorlage rendere.

Ссылка

Schnurrbart ist einfach zu benutzen. Sie nehmen ein Objekt und eine Vorlage und Sie erhalten den HTML-Code zurück.

Beispielobjekt:

%Vor%

Beispielvorlage:

%Vor%

Ergebnis:

%Vor%     
Vilhelm 31.05.2011, 12:55
quelle
2

Der Ansatz, den ich verwendet habe, ist eine versteckte HTML-Vorlage mit Platzhaltern und / oder Klassennamen, die dann über den AJAX / JSON-Aufruf geladen und schließlich mit der gleichen Vorlage in Javascript aktualisiert oder hinzugefügt wurde.

%Vor%

Bei neuen Nachrichten können Sie die Nachricht an den Server senden und dann mithilfe der Funktion loadComment zur Liste hinzufügen oder die gesamte Kommentarliste aktualisieren. Es ist keine vollständige Probe, aber ich hoffe, Sie bekommen die Idee.

    
Eduardo Campañó 31.05.2011 12:31
quelle
0

Ich habe nicht viel mit Rasierklingen oder ASP.NET MVC gearbeitet, aber die Art und Weise, wie ich es normalerweise mit Monorail und NVelocity anwende, ist dies:

Habe eine Vorlage für die Seite. Fügen Sie für die Kommentare eine Teilvorlage hinzu, die Sie in Ihre Hauptvorlage einschließen. Verwenden Sie für die AJAX-Anfrage diese Teilvorlage, um das Markup für den Kommentarteil zu rendern. Ersetzen Sie die Clientseite durch Ihre bevorzugte Methode.

Auf diese Weise erhalten Sie das Markup an einer Stelle, unabhängig davon, ob es sich um eine reguläre Anfrage oder eine Ajax-Anfrage handelt.

    
jishi 31.05.2011 13:43
quelle