ASP.NET Razor - C# en VB-kodesintaksis


Razor ondersteun beide C# (C skerp) en VB (Visual Basic).


Hoofskeermessintaksisreëls vir C#

  • Skeermeskodeblokke is ingesluit in @{ ... }
  • Inlyn uitdrukkings (veranderlikes en funksies) begin met @
  • Kodestellings eindig met kommapunte
  • Veranderlikes word verklaar met die var-sleutelwoord
  • Strings word met aanhalingstekens ingesluit
  • C#-kode is hooflettergevoelig
  • C#-lêers het die uitbreiding .cshtml

C# voorbeeld

<!-- 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>

Hoofskeermessintaksisreëls vir VB

  • Skeermeskodeblokke is ingesluit in @Code ... Eindkode
  • Inlyn uitdrukkings (veranderlikes en funksies) begin met @
  • Veranderlikes word verklaar met die Dim sleutelwoord
  • Strings word met aanhalingstekens ingesluit
  • VB-kode is nie hooflettersensitief nie
  • VB-lêers het die uitbreiding .vbhtml

Voorbeeld

<!-- 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>


Hoe werk dit?

Razor is 'n eenvoudige programmeringssintaksis vir die inbedding van bedienerkode in webblaaie.

Skeermessintaksis is gebaseer op die ASP.NET-raamwerk, die deel van die Microsoft.NET Framework wat spesifiek ontwerp is vir die skep van webtoepassings.  

Die Razor-sintaksis gee jou al die krag van ASP.NET, maar gebruik 'n vereenvoudigde sintaksis wat makliker is om te leer as jy 'n beginner is, en maak jou meer produktief as jy 'n kenner is.

Razor-webbladsye kan beskryf word as HTML-bladsye met twee soorte inhoud: HTML-inhoud en Razor-kode.

Wanneer die bediener die bladsy lees, loop dit eers die Razor-kode, voordat dit die HTML-bladsy na die blaaier stuur. Die kode wat op die bediener uitgevoer word, kan take verrig wat nie in die blaaier gedoen kan word nie, byvoorbeeld toegang tot 'n bedienerdatabasis. Bedienerkode kan dinamiese HTML-inhoud op die vlug skep, voordat dit na die blaaier gestuur word. Vanuit die blaaier gesien, is die HTML wat deur bedienerkode gegenereer word nie anders as statiese HTML-inhoud nie.

ASP.NET-webbladsye met Razor-sintaksis het die spesiale lêeruitbreiding cshtml (Razor met C#) of vbhtml (Razor met VB).


Werk met voorwerpe

Bedienerkodering behels dikwels voorwerpe.

Die "DatumTime"-objek is 'n tipiese ingeboude ASP.NET-objek, maar voorwerpe kan ook selfgedefinieer wees, 'n webblad, 'n tekskassie, 'n lêer, 'n databasisrekord, ens.

Voorwerpe kan metodes hê wat hulle kan uitvoer. 'n Databasisrekord kan 'n "Stoor"-metode hê, 'n beeldvoorwerp kan 'n "Rotate"-metode hê, 'n e-posvoorwerp kan 'n "Stuur"-metode hê, ensovoorts.

Voorwerpe het ook eienskappe wat hul eienskappe beskryf. 'n Databasisrekord kan onder andere 'n Voornaam en 'n LastName-eienskap hê.

Die ASP.NET DateTime-objek het 'n Now-eienskap (geskryf as DateTime.Now), en die Now-eienskap het 'n Day-eienskap (geskryf as DateTime.Now.Day). Die voorbeeld hieronder wys hoe om toegang te verkry tot sekere eienskappe van die DateTime-objek:

Voorbeeld

<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>

Indien en anders voorwaardes

'n Belangrike kenmerk van dinamiese webblaaie is dat jy kan bepaal wat om te doen op grond van toestande.

Die algemene manier om dit te doen is met die if ... else-stellings:

Voorbeeld

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

Lees gebruikersinvoer

Nog 'n belangrike kenmerk van dinamiese webblaaie is dat jy gebruikersinsette kan lees.

Invoer word gelees deur die Versoek[]-funksie, en plasing (invoer) word getoets deur die IsPost-voorwaarde:

Voorbeeld

@{
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>