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

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 :&nbsp;</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

  1. offizielle Dokumentation
HTML- Helper als Eigenschaft der View

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