Views auf dem Server mit RAZOR rendern
Der vom Server auszuführende Code wird in einer View in der
sog. RAZOR- Syntax eingebunden. RAZOR ist ein Parser, der sich am @
-
Symbol orientiert. Dank eingebauter Intelligenz sind keine weiteren
Steuersymbole notwendig, die den serverseitigen Code vom
clientseitigen abgrenzen. Im Vergleich zu klassischen ASP.NET Code,
der Serverseitigen Code in <% … %> einschloss, sind
RAZOR Views leichter lesbar, da schlanker und weniger überladen.
Es gelten folgende Regeln für den RAZOR- Parser:
@ |
RAZOR Einleitungssymbol. Soll @ als literaler Text eingesetzt werden, dann @@ |
@Variablenname |
Inhalt einer Variable wird serverseitig in die Ausgabe an den Browser eingebettet |
@Methode(...) |
Rückgabewert der Methode wird serverseitig eingebettet |
@(...) |
Wirkungsweise von RAZOR auf Klammerinhalt beschränken. Muss eingesetzt werden, wenn RAZOR das Ende einer serverseitigen Anweisung nicht korrekt erkennt |
@{ … } |
Einbetten serverseitiger Anweisungsliste in View |
@model Typename |
Datentyp des Modells in der View festlegen (streng typisierte View) |
@using Namespace |
Deklaration eines Namespaces |
@helper Methodensig{...} |
RAZOR- Unterprogramm. |
@* … *@ |
Kommentar |
<text>...</text> |
Der Inhalt des Textelementes ist clientseitiger Code, den RAZOR überspringt. Beim Rendern werden die <text> Tags entfernt. |
<htmlTag>...</htmlTag> |
Text in HTML- Tags wird von RAZOR übersprungen und an den Client geliefert. |
RAZOR- Unterprogramme
Wiederholen sich serverseitige Anweisungen, dann können die in einen helper- Unterprogrammblock ausgelagert werden:
@* Selbsdefinierter Helper, der die Einbettung von Operanden automatisiert *@ @helper MyLabel(string name, string description) { <label title="@description" class="mathOpLabel">@name : </label> } <h2>Binäre Arithmetik</h2> @using Props = mko.Asp.Mvc.Test.Properties @using (Html.BeginForm("BinOp", "Math")) { @* Html- Helper, der ein Zusammenfassung von Fehlermeldungen einblendet *@ @Html.ValidationSummary(true) <section> <div> @* Einsatz selbsdefinierter Helper *@ @MyLabel(Props.Resources.BinOpViewOperand1Name, @Props.Resources.BinOpViewOperand1Description) @Html.EditorFor(model => model.A, new { Class = "mathOpField" }) @Html.ValidationMessageFor(model => model.A)
HTML- Helper
Url in RAZOR analysieren
Sollen Links auf Ressourcen der MVC- Anwendung in eine View eingebettet werden, dann setzt dies Wissen über den Host und den Anwendungsordner
voraus. Begint man einen URL in einem html Link mit der Tilde ~
, dann ersetzt RAZOR diese durch den Host und den Anwendungsordner
automatisch.
In manchen Fällen müssen URL's in einer View aufwendiger berechnet werden. Hier helfen dann folgende Funktionen:
Ein URL bestehe aus den Partikeln Schema://Host/Anwendungsordner/Pfad?Querystring#Fragment/Anker
- Request.Url.Scheme
- Bestimmt das Schema
- Request.Url.Authority
- Bestimmt den Host
- Url.Content("~/")
- Bestimmt den Anwendungsordner