Partielle Views
Abschnitte mit ähnlicher oder gar gleicher Struktur können durch durch partielle Views verallgemeinert werden. Die Partielle View beschreibt dabei die gemeinsame, visuelle Grundstruktur. In diese können Daten aus Modellen eingebettet werden, die der partiellen View beim Rendern mitgegeben werden. Jede View kann im Prinzip als partielle View dienen
@model mko.Timeline.IDate @* (c) Martin Korneffel, Stuttgart 2017 Darstellung eines Datums, partielle View *@ <time datetime="@Model.Year.ToString(" D4")-@Model.Month.ToString("D2")-@Model.Day.ToString("D2")"> @Model.ToDateTime().ToLongDateString() </time>
Im Unterschied zu gewöhnlichen Views wird das Rendern einer partielle Views nicht von einer Action,
durch den Helper @Html.Partial(...)
angestoßen.
Monde
foreach (var trabant in Model.Trabanten) { @Html.Partial("Mond", trabant.Himmelskoerper); }
Partielle Views für die Html-helper DisplayFor und EditorFor
Das Rendern Modelleigenschaften in HTML durch die Helper kann mittels partieller Views
beeinflusst werden, die in spezielle Unterverzeichnissen von Views
gespeichert sind:
- Ordner <ControllerName>\DisplayTemplates
-
Enthält alle Vorlagen, die DisplayFor vor zum Rendern in HTML einsetzt.
Die Dateinamen sollten mit dem Typnamen von Modellen übereinstimmen, für die eine Renderforlage definiert wird
(Konvention vor Konfiguration).
Sind die Modelle von elementaren Typ wie Double oder String, dann sollten die Vorlagen
Double.cshtml bzw. String.cshtml heißen (Bennenung von Datentypen in VB.NET!)
Beispiel: Inhalt einer Double.cshtml- Vorlage, welche die Anzeige auf drei Nachkommastellen beschränkt@@* Allgemeine Vorlage für die Darstellung von double Werten. Negative Werte werden rot eingefärbt. *@@ @@model double <span style="color: @@if (Model < 0) { <text>#FF0000;</text>} else { <text>#000000;</text> }"> @@string.Format("{0:0.####}", Model) < /span>
- Ordner <ControllerName>\EditorTemplates
-
Enthält alle Vorlagen, die
EditorFor
zum Rendern in HTML einsetzt. Die Dateinamen sollten wie
DisplayTemplates
mit den Typnamen von Modellen übereinstimmen.
Die Editor- Templates sind komplexer, da Metadaten zum Modell abgerufen werden müssen, um die id- und name- Attribute korrekt zu setzen. Diese Metadaten sind im ViewData - Objekt der partiellen View abgelegt wie folgendes Beispiel zeigt einer String.cshtml Vorlage zeigt:@@model String <div< <input type="text" id="@@ViewData.ModelMetadata.PropertyName" name="@@ViewData.ModelMetadata.PropertyName" value="@@Model" class="form-control" /< </div<
Partielle Views mittels AJAX aktualisieren
Die partielle Aktualisierung von Seiteninhalten kann in ASP.NET MVC auf zwei Wegen erreicht werden:
-
mittels Ajax- Helpern der View- Klasse und der
Microsoft jQuery Unobstrusive JavaScript Bibliothek.
Ein Einführungsbeispiel findet man hier.
Vorteil: kein eigener JavaScript- Code erforderlich. Nachteil: Abhängigkeit von zusätzlicher JavaScript- Bibliothek -
mittels jQuery.html()- Ajax Funktion innerhalb eines JavaScript's.
Vorteil: effiziente Implementierung in JavaScript. Nachteil: Zusätzliche Programmierung in JavaScript erforderlich