mk-prg-net \net \asp \ mvc \ views \partial

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

Prinzip der partielle Aktualisierung
Die partielle Aktualisierung von Seiteninhalten kann in ASP.NET MVC auf zwei Wegen erreicht werden:
  1. 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
  2. mittels jQuery.html()- Ajax Funktion innerhalb eines JavaScript's.
    Vorteil: effiziente Implementierung in JavaScript. Nachteil: Zusätzliche Programmierung in JavaScript erforderlich