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