ASP.NET Razor – C#- und VB-Codesyntax


Razor unterstützt sowohl C# (C-Sharp) als auch VB (Visual Basic).


Wichtigste Razor-Syntaxregeln für C#

  • Razor-Code-Blöcke sind in @{ ... } eingeschlossen
  • Inline-Ausdrücke (Variablen und Funktionen) beginnen mit @
  • Codeanweisungen enden mit Semikolon
  • Variablen werden mit dem Schlüsselwort var deklariert
  • Zeichenfolgen werden in Anführungszeichen eingeschlossen
  • Bei C#-Code wird zwischen Groß- und Kleinschreibung unterschieden
  • C#-Dateien haben die Erweiterung .cshtml

C#-Beispiel

<!-- Single statement block -->
@{ var myMessage = "Hello World"; }

<!-- Inline expression or variable -->
<p>The value of myMessage is: @myMessage</p>

<!-- Multi-statement block -->
@{
var greeting = "Welcome to our site!";
var weekDay = DateTime.Now.DayOfWeek;
var greetingMessage = greeting + " Here in Huston it is: " + weekDay;
}

<p>The greeting is: @greetingMessage</p>

Wichtigste Razor-Syntaxregeln für VB

  • Razor-Code-Blöcke sind in @Code ... End Code eingeschlossen
  • Inline-Ausdrücke (Variablen und Funktionen) beginnen mit @
  • Variablen werden mit dem Schlüsselwort Dim deklariert
  • Zeichenfolgen werden in Anführungszeichen eingeschlossen
  • Beim VB-Code wird die Groß-/Kleinschreibung nicht beachtet
  • VB-Dateien haben die Erweiterung .vbhtml

Beispiel

<!-- Single statement block  --> 
@Code dim myMessage = "Hello World" End Code
 
<!-- Inline expression or variable --> 
<p>The value of myMessage is: @myMessage</p> 
 
<!-- Multi-statement block --> 
@Code
dim greeting = "Welcome to our site!" 
dim weekDay = DateTime.Now.DayOfWeek 
dim greetingMessage = greeting & " Here in Huston it is: " & weekDay
End Code


<p>The greeting is: @greetingMessage</p>


Wie funktioniert es?

Razor ist eine einfache Programmiersyntax zum Einbetten von Servercode in Webseiten.

Die Razor-Syntax basiert auf dem ASP.NET-Framework, dem Teil von Microsoft.NET Framework, der speziell für die Erstellung von Webanwendungen entwickelt wurde.  

Die Razor-Syntax bietet Ihnen die gesamte Leistungsfähigkeit von ASP.NET, verwendet jedoch eine vereinfachte Syntax, die für Anfänger einfacher zu erlernen ist und Sie als Experte produktiver macht.

Razor-Webseiten können als HTML-Seiten mit zwei Arten von Inhalten beschrieben werden: HTML-Inhalt und Razor-Code.

Wenn der Server die Seite liest, führt er zuerst den Razor-Code aus, bevor er die HTML-Seite an den Browser sendet. Der Code, der auf dem Server ausgeführt wird, kann Aufgaben ausführen, die im Browser nicht ausgeführt werden können, z. B. den Zugriff auf eine Serverdatenbank. Servercode kann dynamischen HTML-Inhalt im Handumdrehen erstellen, bevor er an den Browser gesendet wird. Aus Sicht des Browsers unterscheidet sich das vom Servercode generierte HTML nicht von statischen HTML-Inhalten.

ASP.NET-Webseiten mit Razor-Syntax haben die spezielle Dateierweiterung cshtml (Razor mit C#) oder vbhtml (Razor mit VB).


Arbeiten mit Objekten

Bei der Servercodierung sind häufig Objekte beteiligt.

Das „DateTime“-Objekt ist ein typisches integriertes ASP.NET-Objekt, aber Objekte können auch selbstdefiniert sein, eine Webseite, ein Textfeld, eine Datei, ein Datenbankeintrag usw.

Objekte können Methoden haben, die sie ausführen können. Ein Datenbankeintrag könnte eine „Save“-Methode haben, ein Bildobjekt könnte eine „Rotate“-Methode haben, ein E-Mail-Objekt könnte eine „Send“-Methode haben und so weiter.

Objekte haben auch Eigenschaften, die ihre Eigenschaften beschreiben. Ein Datenbankeintrag kann (unter anderem) eine FirstName- und eine LastName-Eigenschaft haben.

Das DateTime-Objekt von ASP.NET hat eine Now-Eigenschaft (geschrieben als DateTime.Now), und die Now-Eigenschaft hat eine Day-Eigenschaft (geschrieben als DateTime.Now.Day). Das folgende Beispiel zeigt, wie auf einige Eigenschaften des DateTime-Objekts zugegriffen wird:

Beispiel

<table border="1">
<tr>
<th width="100px">Name</th>
<td width="100px">Value</td>
</tr>
<tr>
<td>Day</td><td>@DateTime.Now.Day</td>
</tr>
<tr>
<td>Hour</td><td>@DateTime.Now.Hour</td>
</tr>
<tr>
<td>Minute</td><td>@DateTime.Now.Minute</td>
</tr>
<tr>
<td>Second</td><td>@DateTime.Now.Second</td>
</tr>
</td>
</table>

If-and-Else-Bedingungen

Ein wichtiges Merkmal dynamischer Webseiten ist, dass Sie anhand von Bedingungen bestimmen können, was zu tun ist.

Der übliche Weg, dies zu tun, ist mit den if ... else-Anweisungen:

Beispiel

@{
var txt = "";
if(DateTime.Now.Hour > 12)
  {txt = "Good Evening";}
else
  {txt = "Good Morning";}
}
<html>
<body>
<p>The message is @txt</p>
</body>
</html>

Lesen von Benutzereingaben

Ein weiteres wichtiges Merkmal dynamischer Webseiten ist, dass Sie Benutzereingaben lesen können.

Die Eingabe wird von der Request[]-Funktion gelesen, und das Posten (Eingabe) wird von der IsPost-Bedingung getestet:

Beispiel

@{
var totalMessage = "";
if(IsPost)
    {
    var num1 = Request["text1"];
    var num2 = Request["text2"];
    var total = num1.AsInt() + num2.AsInt();
    totalMessage = "Total = " + total;
    }
}

<html>
<body style="background-color: beige; font-family: Verdana, Arial;">
<form action="" method="post">
<p><label for="text1">First Number:</label><br>
<input type="text" name="text1" /></p>
<p><label for="text2">Second Number:</label><br>
<input type="text" name="text2" /></p>
<p><input type="submit" value=" Add " /></p>
</form>
<p>@totalMessage</p>
</body>
</html>