IV. Syntaxe de base de Razor▲
Razor n'est pas un nouveau langage de programmation. Il s'appuie sur les langages .NET connus en l'occurrence C# et VB.NET, et la puissance d'ASP.NET pour permettre de créer facilement des applications Web robustes.
Nous allons donner dans cette section, un aperçu des fondamentaux de Razor qu'il est nécessaire de maitriser.
IV-A. Le caractère @▲
Le code Razor dans une page commence obligatoirement avec le caractère "magique" @. Contrairement à l'utilisation des caractères ,
<%
%>
Razor ne vous oblige pas à fermer implicitement un bloc de code et rend les vues plus lisibles.
Pour une seule ligne de code serveur que vous insérez dans une page, la syntaxe est la suivante :
@DateTime.
Now.
ToShortDateString
(
)
Pour mélanger une expression avec du texte sur une ligne, la syntaxe est la suivante :
Bonjour @nom.
Nous sommes le @DateTime.
Now.
ToShortDateString
(
).
IV-B. Les opérateurs de bases▲
Razor étant essentiellement basé sur la syntaxe du langage C#, et VB.NET, les opérateurs de base utilisés par celui-ci sont les mêmes que pour ces deux langages, en fonction du type de fichier que vous utilisez.
Pour les fichiers .schtml, nous aurons donc les opérateurs suivants que nous n'allons pas décrire cependant.
.
;
>=
;
(
) ;
+
;
[]
;
-
;
=
;
*
;
!
;
/
;
==
;
&&
;
!=
;
||
;
<>
;
+=
;
<=
;
-=
IV-C. Les blocs de code▲
Le code sur plusieurs lignes est défini dans un bloc. Les blocs de code Razor doivent contenir le caractère @ suivi des {} (@{}).
@{
var
Nom =
"Hinault"
;
var
Message =
"Salut"
+
Nom;
}
Chaque instruction dans un bloc de code doit toujours s'achever avec le ;.
IV-D. Les variables▲
La déclaration des variables avec Razor se fait en utilisant le mot-clé "var".
@{
//Affectation d'une chaine à une variable
var
Nom =
" Hinault "
;
//Affectation d'un entier
var
Compteur =
5
;
//Affection d'une expression
var
VFinal =
Compteur +
3
;
}
Ou en utilisant la syntaxe classique en définissant explicitement le type de données.
@{
string
Nom =
"hinault"
;
int
Valeur =
205
;
DateTime Today =
DateTime.
Now ;
}
Le mot-clé "new" est également pris en compte.
@{
var
stringBuilder stB =
new
System.
Text.
StringBuilder
(
);
}
Tout comme en C#, les noms de variables et les mots-clés comme var, if, etc. sont sensibles à la casse.
IV-E. Les chaines de caractères▲
Pour spécifier une chaine de caractères, vous devez simplement placer la chaine entre les guillemets.
@{
var
message =
"bonjour monsieur"
;
}
Si la chaine que vous souhaitez afficher contient le caractère "\", ou les guillemets, vous pouvez utiliser l'opérateur "@" pour spécifier une chaine de caractères verbatim.
@{
myFilePath=
@"C:\perso\"
;
}
<
p>
Le dossier personnel est :
@folder</
p>
Pour le cas du texte contenant les guillemets, l'opérateur "@" doit être utilisé, et les guillemets doivent être doublés :
@{
var
MyQuote =
@"Les utilisateurs ont dit : ""Razor est cool.""";
}
<p>@MyQuote</p>
Ce qui produit comme résultat :
Les utilisateurs ont dit : " Razor est cool "
Pour un texte unique dans un bloc, la syntaxe est la suivante :
@{
@:
Nous sommes le :
<
b>
@DateTime.
Now.
ToShortDateString
(
) </
b>
}
L'analyseur de code Razor est assez intelligent dans la plupart des cas, et est capable de déduire si le caractère @ dans une page est utilisé pour un bloc de code ou pour du contenu statique.
Le caractère @ peut être utilisé par exemple pour définir un email :
<p>
Mon mail est rdonfack@redaction-developpez.com
</p>
Lors de l'analyse de cette ligne par Razor, celui-ci va détecter automatiquement qu'il s'agit d'un contenu statique.
Le caractère @ peut également être échappé en le doublant simplement :
Ce qui va donner comme résultat :
Le caractère "@" est magique avec Razor
IV-F. Les tableaux et les dictionnaires de données▲
Une collection est un groupe d'objets de même type. Deux types de collections sont couramment utilisés en ASP.NET : les tableaux et les dictionnaires de données.
La déclaration d'un tableau peut être faite comme suit :
@{
string
[]
Clients =
{
"Hinault"
,
"Paul"
,
"Romain"
,
"André"
,
"Jean"
};
var
Clients2 =
new
string
[]
{
"Hinault"
,
"Paul"
,
"Romain"
,
"André"
,
"Jean"
}
;
}
<
p>
@Clients[
1
]
est client dans notre entreprise</
p>
Un dictionnaire quant à lui, est une collection qui associe une clé unique à chaque élément. On peut ensuite accéder à cet élément via sa clé.
L'implémentation d'un dictionnaire avec Razor est la suivante :
@{
var
mesApp =
new
Dictionary<
string
,
string
>(
);
mesApp.
Add
(
"App1"
,
"Visual Studio"
);
mesApp.
Add
(
"App2"
,
"WebMatrix"
);
mesApp.
Add
(
"App3"
,
"SQL Server"
);
}
<
p>
La seconde application couramment utilisée est :
@mesApp[
"App2"
]%</
p>
IV-G. les boucles▲
Pour parcourir un tableau dans une vue Razor, vous pouvez utiliser les boucles for, foreach ou encore While. Leur syntaxe est reprise des langages C# et VB.NET.
IV-G-1. La boucle for▲
La syntaxe d'utilisation de la boucle for est la suivante :
@{
string
[]
Clients =
{
"Hinault"
,
"Paul"
,
"Romain"
,
"André"
,
"Jean"
};
int
ct =
Clients.
Lenght
(
);
for
(
var
i =
0
;
i <
ct;
i++
)
{
<
p>
@Clients[
i]</
p>
}
}
IV-G-2. La boucle foreach▲
La bouche foreach est pratique pour parcourir les collections, car contrairement à une boucle for, vous n'avez pas à incrémenter le compteur ou fixer une limite. Au lieu de cela, la boucle foreach passe simplement à travers la collection jusqu'à ce qu'elle soit terminée.
La syntaxe de cette boucle est la suivante :
@{
string
[]
Clients =
{
"Hinault"
,
"Paul"
,
"Romain"
,
"André"
,
"Jean"
};
foreach
(
var
Client in
Clients)
{
<
p>
@Client</
p>
}
}
IV-G-3. La boucle While▲
La syntaxe d'utilisation de la boucle While dans une vue Razor est la suivante :
@{
string
[]
Clients =
{
"Hinault"
,
"Paul"
,
"Romain"
,
"André"
,
"Jean"
};
int
ct =
Client.
Count
(
);
int
i =
0
;
While (
i <
ct)
{
<
p>
@Client[
i]</
p>
i +=
1
;
}
}
IV-H. Les structures de contrôles ▲
La syntaxe basique de la condition if est la suivante :
@ {
var
showToday =
true
;
if
(
showToday) if
(
showToday)
{
@DateTime.
Today;
@ DateTime.
Today;
}
}
Et avec un else :
@{
var
showToday =
false
;
if
(
showToday)
{
@DateTime.
Today;
}
else
{
<
text>
Désolé!</
text>
}
}
L'utilisation du switch peut être faite comme suit :
@{
var
Civilite =
"M"
;
var
Message =
""
;
switch
(
Civilite)
{
case
"M"
:
Message =
"Bonjour Monsieur"
;
break
;
case
"Mme"
:
Message =
"Bonjour Madame"
;
break
;
case
"Mlle"
:
Message =
"Bonjour Mademoiselle"
;
break
;
default
:
Message =
"Inconnu"
;
break
;
}
<
p>
@Message</
p>
}
IV-I. Les commentaires▲
L'inclusion des commentaires dans un code Razor commence avec les caractères-clefs "@*", et se termine avec les caractères "*@".
@{
@*
Un simple commentaire sur une ligne *
@
var
nom =
"Hinault"
;
@*
commentaires sur plusieurs
lignes *
@
@*
un autre commentaire sur plusieurs lignes
var
nom =
"Hinault"
;
fin du commentaire *
@
}
Les commentaires traditionnels en C# ou en VB.NET (en fonction du type de fichier que vous utilisez) sont également pris en compte dans un bloc de code Razor.
@ {
// Un commentaire sur une ligne en C#.
var
nom =
"Hinault"
;
/* Commentaire sur plusieurs lignes
En utilisant le langage C# avec Razor */
}
IV-J. Gestion des exceptions▲
Pour la gestion des exceptions, le traditionnel try{}catch(){}, peut être utilisé dans une vue Razor.
Sa syntaxe est la suivante :
@{
int
a=
0
,
b=
0
;
try
{
b =
5
/
a;
}
catch
(
DivideByZeroException Ex)
{
<
p>
impossible de diviser un nombre par zéro </
p>
<
p>
Details :
@Ex.
message</
p>
}
}