Introduction to ASP.NET Web Programming Using the Razor Syntax (Visual Basic) (Présentation de la programmation Web ASP.NET à l'aide de la syntaxe Razor (Visual Basic)).

par Tom FitzMacken

Cet article vous donne une vue d’ensemble de la programmation avec pages Web ASP.NET à l’aide de la syntaxe Razor et de la Visual Basic. ASP.NET est la technologie de Microsoft pour exécuter des pages web dynamiques sur des serveurs web.

Ce que vous allez apprendre :

  • Les 8 principaux conseils de programmation pour bien démarrer avec la programmation pages Web ASP.NET à l’aide de la syntaxe Razor.
  • Concepts de programmation de base dont vous aurez besoin.
  • À propos de quoi ASP.NET code serveur et la syntaxe Razor.

Versions logicielles

  • pages Web ASP.NET (Razor) 3

Ce didacticiel fonctionne également avec pages Web ASP.NET 2.

La plupart des exemples d’utilisation de pages Web ASP.NET avec la syntaxe Razor utilisent C#. Mais la syntaxe Razor prend également en charge Visual Basic. Pour programmer une page web ASP.NET dans Visual Basic, vous créez une page web avec une extension de nom de fichier .vbhtml, puis ajoutez Visual Basic code. Cet article vous donne une vue d’ensemble de l’utilisation du langage et de la syntaxe Visual Basic pour créer des pages web ASP.NET.

Notes

Les modèles de site web par défaut pour Microsoft WebMatrix (boulangerie, galerie de photos et site de démarrage, etc.) sont disponibles en C# et Visual Basic versions. Vous pouvez installer les modèles Visual Basic en tant que packages NuGet. Les modèles de site web sont installés dans le dossier racine de votre site dans un dossier nommé Modèles Microsoft.

Les 8 premières Astuces de programmation

Cette section répertorie quelques conseils que vous devez absolument savoir lorsque vous commencez à écrire ASP.NET code serveur à l’aide de la syntaxe Razor.

1. Vous ajoutez du code à une page à l’aide du caractère @

Le @ caractère démarre les expressions inline, les blocs d’instruction unique et les blocs multi-instructions :

<!-- Single statement blocks  -->
@Code  Dim total = 7  End Code
@Code  Dim myMessage = "Hello World" End Code

<!-- Inline expressions -->
<p>The value of your account is: @total </p>
<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 & " Today is: " & weekDay.ToString()
End Code 
<p>The greeting is: @greetingMessage</p>

Résultat affiché dans un navigateur :

Razor-Img1

Conseil

Encodage HTML

Lorsque vous affichez du contenu dans une page à l’aide du @ caractère, comme dans les exemples précédents, ASP.NET encode le code HTML. Cela remplace les caractères HTML réservés (tels que < et >&) par des codes qui permettent aux caractères d’être affichés en tant que caractères dans une page web au lieu d’être interprétés comme des balises HTML ou des entités. Sans encodage HTML, la sortie de votre code serveur peut ne pas s’afficher correctement et exposer une page aux risques de sécurité.

Si votre objectif est de générer des balises HTML qui affichent des balises en tant que balisage (par exemple <p></p> , pour un paragraphe ou <em></em> pour mettre en évidence le texte), consultez la section Combinaison de texte, de balisage et de code dans les blocs de code plus loin dans cet article.

Vous pouvez en savoir plus sur l’encodage HTML dans l’utilisation de formulaires HTML dans pages Web ASP.NET sites.

2. Vous insérez des blocs de code avec code... Code final

Un bloc de code inclut une ou plusieurs instructions de code et est placé entre les mots clés Code et End Code. Placez le mot clé d’ouverture Code immédiatement après le @ caractère : il ne peut pas y avoir d’espace blanc entre eux.

<!-- Single statement block.  -->
@Code
    Dim theMonth = DateTime.Now.Month
End Code
<p>The numeric value of the current month: @theMonth</p>

<!-- Multi-statement block. -->
@Code
    Dim outsideTemp = 79
    Dim weatherMessage = "Hello, it is " & outsideTemp & " degrees."
End Code 
<p>Today's weather: @weatherMessage</p>

Résultat affiché dans un navigateur :

Razor-Img2

3. À l’intérieur d’un bloc, vous terminez chaque instruction de code avec un saut de ligne

Dans un bloc de code Visual Basic, chaque instruction se termine par un saut de ligne. (Plus loin dans l’article, vous verrez un moyen d’encapsuler une instruction de code longue dans plusieurs lignes si nécessaire.)

<!-- Single statement block. -->
@Code
    Dim theMonth = DateTime.Now.Month
End Code

<!-- Multi-statement block. -->
@Code
    Dim outsideTemp = 79
    Dim weatherMessage = "Hello, it is " & outsideTemp & " degrees."
End Code 

<!-- An inline expression, so no line break needed. -->
<p>Today's weather: @weatherMessage</p>

4. Vous utilisez des variables pour stocker des valeurs

Vous pouvez stocker des valeurs dans une variable, notamment des chaînes, des nombres et des dates, etc. Vous créez une variable à l’aide du Dim mot clé. Vous pouvez insérer des valeurs de variable directement dans une page à l’aide @de .

<!-- Storing a string -->
@Code 
    Dim welcomeMessage = "Welcome, new members!"
End Code
<p>@welcomeMessage</p>
    
<!-- Storing a date -->
@Code 
    Dim year = DateTime.Now.Year
End Code

<!-- Displaying a variable -->
<p>Welcome to our new members who joined in @year!</p>

Résultat affiché dans un navigateur :

Razor-Img3

5. Vous placez les valeurs de chaîne littérale entre guillemets doubles

Une chaîne est une séquence de caractères qui sont traités comme du texte. Pour spécifier une chaîne, vous l’insérez entre guillemets doubles :

@Code 
    Dim myString = "This is a string literal"
End Code

Pour incorporer des guillemets doubles dans une valeur de chaîne, insérez deux caractères de guillemets doubles. Si vous souhaitez que le caractère guillemet double apparaisse une fois dans la sortie de la page, entrez-le comme "" dans la chaîne entre guillemets, et si vous le souhaitez deux fois, entrez-le comme """" dans la chaîne entre guillemets.

<!-- Embedding double quotation marks in a string -->
@Code 
    Dim myQuote = "The person said: ""Hello, today is Monday."""
End Code
<p>@myQuote</p>

Résultat affiché dans un navigateur :

Razor-Img4

6. Visual Basic code n’est pas sensible à la casse

La langue Visual Basic n’est pas sensible à la casse. Les mots clés de programmation (comme Dim, Ifet) et Trueles noms de variables (comme myString, ou subTotal) peuvent être écrits dans n’importe quel cas.

Les lignes de code suivantes attribuent une valeur à la variable lastname à l’aide d’un nom en minuscules, puis sortient la valeur de la variable dans la page à l’aide d’un nom majuscule.

@Code 
    Dim lastName = "Smith"
    ' Keywords like dim are also not case sensitive.
    DIM someNumber = 7
End Code
<p>The value of the <code>lastName</code> variable is: @LASTNAME</p>

Résultat affiché dans un navigateur :

vb-syntax-5

7. Une grande partie de votre codage implique l’utilisation d’objets

Un objet représente une chose que vous pouvez programmer avec : une page, une zone de texte, un fichier, une image, une demande web, un e-mail, un enregistrement client (ligne de base de données), etc. Les objets ont des propriétés qui décrivent leurs caractéristiques : un objet zone de texte a une Text propriété, un objet de requête a une Url propriété, un message électronique a une From propriété et un objet client a une FirstName propriété. Les objets ont également des méthodes qui sont les « verbes » qu’ils peuvent effectuer. Les exemples incluent la méthode d’un Save objet de fichier, la méthode d’un Rotate objet image et la méthode d’un Send objet e-mail.

Vous allez souvent travailler avec l’objet Request , ce qui vous donne des informations telles que les valeurs des champs de formulaire sur la page (zones de texte, etc.), quel type de navigateur a effectué la requête, l’URL de la page, l’identité de l’utilisateur, etc. Cet exemple montre comment accéder aux propriétés de l’objet Request et comment appeler la MapPath méthode de l’objet Request , ce qui vous donne le chemin absolu de la page sur le serveur :

<table border="1"> 
    <tr>
        <td>Requested URL</td>
        <td>Relative Path</td>
        <td>Full Path</td>
        <td>HTTP Request Type</td>
    </tr>
    <tr>
        <td>@Request.Url</td>
        <td>@Request.FilePath</td>
        <td>@Request.MapPath(Request.FilePath)</td>
        <td>@Request.RequestType</td>
    </tr>
</table>

Résultat affiché dans un navigateur :

Razor-Img5

8. Vous pouvez écrire du code qui prend des décisions

Une fonctionnalité clé des pages web dynamiques est que vous pouvez déterminer ce qu’il faut faire en fonction des conditions. La façon la plus courante d’effectuer cette opération consiste à utiliser l’instruction If (et l’instruction facultative Else ).

@Code
   Dim result = ""
   If IsPost Then
      result = "This page was posted using the Submit button."
   Else
      result = "This was the first request for this page."
   End If
End Code
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Write Code that Makes Decisions</title>
    </head>
<body>
    
    <form method="POST" action="" >
        <input type="Submit" name="Submit" value="Submit"/>
        <p>@result</p>
    </form>
    
</body>
</html>

L’instruction If IsPost est un moyen court d’écrire If IsPost = True. If Outre les instructions, il existe diverses façons de tester des conditions, de répéter des blocs de code, et ainsi de suite, qui sont décrits plus loin dans cet article.

Résultat affiché dans un navigateur (après avoir cliqué sur Envoyer) :

Razor-Img6

Conseil

Méthodes HTTP GET et POST et isPost, propriété

Le protocole utilisé pour les pages web (HTTP) prend en charge un nombre très limité de méthodes (« verbes ») utilisées pour effectuer des requêtes au serveur. Les deux plus courants sont GET, qui sont utilisés pour lire une page et POST, qui sont utilisés pour envoyer une page. En général, la première fois qu’un utilisateur demande une page, la page est demandée à l’aide de GET. Si l’utilisateur remplit un formulaire, puis clique sur Envoyer, le navigateur effectue une requête POST sur le serveur.

Dans la programmation web, il est souvent utile de savoir si une page est demandée en tant que GET ou post afin de savoir comment traiter la page. Dans pages Web ASP.NET, vous pouvez utiliser la IsPost propriété pour voir si une requête est get ou post. Si la requête est post, la IsPost propriété retourne true et vous pouvez effectuer des opérations telles que lire les valeurs des zones de texte sur un formulaire. De nombreux exemples vous montrent comment traiter la page différemment en fonction de la valeur de IsPost.

Exemple de code simple

Cette procédure vous montre comment créer une page qui illustre les techniques de programmation de base. Dans l’exemple, vous créez une page qui permet aux utilisateurs d’entrer deux nombres, puis de les ajouter et d’afficher le résultat.

  1. Dans votre éditeur, créez un fichier et nommez-le AddNumbers.vbhtml.

  2. Copiez le code et le balisage suivants dans la page, en remplaçant tout ce qui se trouve déjà dans la page.

    @Code
        Dim total = 0
        Dim totalMessage = ""
        if IsPost Then
            ' Retrieve the numbers that the user entered.
            Dim num1 = Request("text1")
            Dim num2 = Request("text2")
            ' Convert the entered strings into integers numbers and add.
            total = num1.AsInt() + num2.AsInt()
            totalMessage = "Total = " & total
        End If
    End Code
    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="utf-8" />
            <title>Adding Numbers</title>
            <style type="text/css">
                body {background-color: beige; font-family: Verdana, Ariel; 
                    margin: 50px;
                    }
                form {padding: 10px; border-style: solid; width: 250px;}
            </style>
        </head>
    <body>
        <p>Enter two whole numbers and click <strong>Add</strong> to display the result.</p>
        <p></p>
        <form action="" method="post">
        <p><label for="text1">First Number:</label>
        <input type="text" name="text1" />
        </p>
        <p><label for="text2">Second Number:</label>
        <input type="text" name="text2" />
        </p>
        <p><input type="submit" value="Add" /></p>
        </form>
        <p>@totalMessage</p>
    </body>
    </html>
    

    Voici quelques éléments à noter :

    • Le @ caractère démarre le premier bloc de code dans la page, et il précède la totalMessage variable incorporée près du bas.
    • Le bloc situé en haut de la page est placé dans Code...End Code.
    • Les variables total, , et num1num2totalMessage stockent plusieurs nombres et une chaîne.
    • La valeur de chaîne littérale affectée à la totalMessage variable est entre guillemets doubles.
    • Étant donné que Visual Basic code n’est pas sensible à la casse, lorsque la totalMessage variable est utilisée en bas de la page, son nom doit uniquement correspondre à l’orthographe de la déclaration de variable en haut de la page. La casse n’a pas d’importance.
    • L’expression num1.AsInt() + num2.AsInt() montre comment utiliser des objets et des méthodes. La AsInt méthode sur chaque variable convertit la chaîne entrée par un utilisateur en nombre entier (entier) qui peut être ajouté.
    • La <form> balise inclut un method="post" attribut. Cela spécifie que lorsque l’utilisateur clique sur Ajouter, la page est envoyée au serveur à l’aide de la méthode HTTP POST. Lorsque la page est envoyée, le code If IsPost prend la valeur true et le code conditionnel s’exécute, affichant le résultat de l’ajout des nombres.
  3. Enregistrez la page et exécutez-la dans un navigateur. (Vérifiez que la page est sélectionnée dans l’espace de travail Fichiers avant de l’exécuter.) Entrez deux nombres entiers, puis cliquez sur le bouton Ajouter .

    Razor-Img7

langage et syntaxe Visual Basic

Plus tôt, vous avez vu un exemple de base de la création d’une page web ASP.NET et comment ajouter du code serveur au balisage HTML. Ici, vous allez apprendre les principes de base de l’utilisation de Visual Basic pour écrire ASP.NET code serveur à l’aide de la syntaxe Razor , autrement dit, les règles de langage de programmation.

Si vous connaissez la programmation (en particulier si vous avez utilisé C, C++, C#, Visual Basic ou JavaScript), une grande partie de ce que vous lisez ici sera familière. Vous devrez probablement vous familiariser uniquement avec la façon dont le code WebMatrix est ajouté au balisage dans les fichiers .vbhtml .

Combinaison de texte, de balisage et de code dans des blocs de code

Dans les blocs de code serveur, vous souhaiterez souvent générer du texte et du balisage sur la page. Si un bloc de code serveur contient du texte qui n’est pas du code et qu’il doit être rendu tel quel, ASP.NET doit être en mesure de distinguer ce texte du code. Il existe plusieurs manières de procéder.

  • Placez le texte dans un élément de bloc HTML comme <p></p> ou <em></em>:

    @If IsPost Then
        ' This line has all content between matched <p> tags.
        @<p>Hello, the time is @DateTime.Now and this page is a postback!</p> 
    Else
        ' All content between matched tags, followed by server code.
        @<p>Hello, <em>Stranger!</em> today is: </p> @DateTime.Now
    End If
    

    L’élément HTML peut inclure du texte, des éléments HTML supplémentaires et des expressions de code serveur. Lorsque ASP.NET voit la balise HTML ouvrante (par exemple), <p>elle affiche tout ce que l’élément et son contenu comme c’est le cas dans le navigateur (et résout les expressions de code serveur).

  • Utilisez l’opérateur ou l’élément @:<text> . La @: sortie d’une seule ligne de contenu contenant du texte brut ou des balises HTML non conformes; l’élément <text> contient plusieurs lignes à générer. Ces options sont utiles lorsque vous ne souhaitez pas afficher un élément HTML dans le cadre de la sortie.

    @If IsPost Then
        ' Plain text followed by an unmatched HTML tag and server code.
        @:The time is: <br /> @DateTime.Now
        ' Server code and then plain text, matched tags, and more text.
        @DateTime.Now @:is the <em>current</em> time.
    End If
    

    L’exemple suivant répète l’exemple précédent, mais utilise une paire unique de <text> balises pour placer le texte à afficher.

    @If IsPost Then
        @<text>
        The time is: <br /> @DateTime.Now
        @DateTime.Now is the <em>current</em> time.
        </text>
    End If
    

    Dans l’exemple suivant, les <text> étiquettes et </text> les balises entourent trois lignes, qui ont tous un texte non bloqué et des balises HTML non conformes (<br />), ainsi que du code serveur et des balises HTML correspondantes. Là encore, vous pouvez également précéder chaque ligne individuellement avec l’opérateur ; l’un ou l’autre @: fonctionne.

    @Code
        dim minTemp = 75 
        @<text>It is the month of @DateTime.Now.ToString("MMMM"), and  
        it's a <em>great</em> day! <p>You can go swimming if it's at 
        least @minTemp degrees.</p></text>
    End Code
    

    Notes

    Lorsque vous sortiez du texte comme indiqué dans cette section , à l’aide d’un élément HTML, de l’opérateur @: ou de l’élément <text> , ASP.NET n’encode pas le code HTML. (Comme indiqué précédemment, ASP.NET encode la sortie des expressions de code serveur et des blocs de code serveur précédés @par , sauf dans les cas spéciaux indiqués dans cette section.)

Espaces

Les espaces supplémentaires dans une instruction (et en dehors d’un littéral de chaîne) n’affectent pas l’instruction :

@Code Dim personName =    "Smith"    End Code

Rupture d’instructions longues en plusieurs lignes

Vous pouvez interrompre une instruction de code longue en plusieurs lignes à l’aide du caractère _ de soulignement (qui dans Visual Basic est appelé caractère de continuation) après chaque ligne de code. Pour interrompre une instruction sur la ligne suivante, à la fin de la ligne, ajoutez un espace, puis le caractère de continuation. Poursuivez l’instruction sur la ligne suivante. Vous pouvez encapsuler des instructions sur autant de lignes que nécessaire pour améliorer la lisibilité. Les instructions suivantes sont les mêmes :

@Code
    Dim familyName _
    =  "Smith" 
End Code

@Code
    Dim _
    theName _
    = _
    "Smith"
End Code

Toutefois, vous ne pouvez pas encapsuler une ligne au milieu d’un littéral de chaîne. L’exemple suivant ne fonctionne pas :

@Code 
    ' Doesn't work.
    Dim test = "This is a long _
      string"
End Code

Pour combiner une longue chaîne qui s’encapsule à plusieurs lignes comme le code ci-dessus, vous devez utiliser l’opérateur de concaténation (&), que vous verrez plus loin dans cet article.

Commentaires de code

Les commentaires vous permettent de laisser des notes pour vous-même ou d’autres personnes. Les commentaires de syntaxe Razor sont précédés @* et se terminent par *@.

@* A single-line comment is added like this example. *@
    
@*
    This is a multiline code comment. 
    It can continue for any number of lines.
*@

Dans les blocs de code, vous pouvez utiliser les commentaires de syntaxe Razor, ou vous pouvez utiliser un caractère de commentaire Visual Basic ordinaire, qui est un seul guillemet (') précédé de chaque ligne.

@Code
    ' You can make comments in blocks by just using ' before each line.
End Code
    
@Code
    ' There is no multi-line comment character in Visual Basic. 
    ' You use a ' before each line you want to comment. 
End Code

Variables

Une variable est un objet nommé que vous utilisez pour stocker des données. Vous pouvez nommer des variables, mais le nom doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces blancs ou de caractères réservés. Dans Visual Basic, comme vous l’avez vu précédemment, le cas des lettres dans un nom de variable n’a pas d’importance.

Variables et types de données

Une variable peut avoir un type de données spécifique, qui indique le type de données stocké dans la variable. Vous pouvez avoir des variables de chaîne qui stockent des valeurs de chaîne (comme « Hello world »), des variables entières qui stockent des valeurs de nombre entier (comme 3 ou 79) et des variables de date qui stockent les valeurs de date dans différents formats (comme 4/12/2012 ou mars 2009). Et il existe de nombreux autres types de données que vous pouvez utiliser.

Toutefois, vous n’avez pas besoin de spécifier un type pour une variable. Dans la plupart des cas, ASP.NET pouvez déterminer le type en fonction de la façon dont les données de la variable sont utilisées. (Parfois, vous devez spécifier un type ; vous verrez des exemples où cela est vrai.)

Pour déclarer une variable sans spécifier de type, utilisez Dim plus le nom de la variable (par exemple). Dim myVar Pour déclarer une variable avec un type, utilisez Dim plus le nom de la variable, suivi du As nom du type (par exemple, Dim myVar As String).

@Code
    ' Assigning a string to a variable.
    Dim greeting = "Welcome" 
    
    ' Assigning a number to a variable.
    Dim theCount = 3
    
    ' Assigning an expression to a variable.
    Dim monthlyTotal = theCount + 5
    
    ' Assigning a date value to a variable.
    Dim today = DateTime.Today
    
    ' Assigning the current page's URL to a variable.
    Dim myPath = Request.Url
    
    ' Declaring variables using explicit data types.
    Dim name as String = "Joe"
    Dim count as Integer = 5
    Dim tomorrow as DateTime = DateTime.Now.AddDays(1)
End Code

L’exemple suivant montre quelques expressions inline qui utilisent les variables dans une page web.

@Code
    ' Embedding the value of a variable into HTML markup.
    ' Precede the markup with @ because we are in a code block.
    @<p>@greeting, friends!</p>
End Code

<!-- Using a variable with an inline expression in HTML. --> 
<p>The predicted annual total is: @( monthlyTotal * 12)</p>

<!--  Displaying the page URL with a variable. --> 
<p>The URL to this page is:  @myPath</p>

Résultat affiché dans un navigateur :

Razor-Img9

Conversion et test des types de données

Bien que ASP.NET puisse généralement déterminer un type de données automatiquement, parfois il ne peut pas. Par conséquent, vous devrez peut-être aider ASP.NET en effectuant une conversion explicite. Même si vous n’avez pas besoin de convertir des types, il est parfois utile de tester le type de données avec lequel vous travaillez peut-être.

Le cas le plus courant est que vous devez convertir une chaîne en un autre type, tel qu’un entier ou une date. L’exemple suivant montre un cas classique où vous devez convertir une chaîne en nombre.

@Code
    Dim total = 0
    Dim totalMessage = ""
    if IsPost Then
        ' Retrieve the numbers that the user entered.
        Dim num1 = Request("text1")
        Dim num2 = Request("text2")
        ' Convert the entered strings into integers numbers and add.
        total = num1.AsInt() + num2.AsInt()
        totalMessage = "Total = " & total
    End If
End Code

En règle générale, l’entrée utilisateur vous est fournie en tant que chaînes. Même si vous avez invité l’utilisateur à entrer un nombre et même s’il a entré un chiffre, lorsque l’entrée de l’utilisateur est envoyée et que vous liez dans le code, les données sont au format chaîne. Par conséquent, vous devez convertir la chaîne en nombre. Dans l’exemple, si vous essayez d’effectuer une arithmétique sur les valeurs sans les convertir, les résultats d’erreur suivants, car ASP.NET ne peut pas ajouter deux chaînes :

Cannot implicitly convert type 'string' to 'int'.

Pour convertir les valeurs en entiers, vous appelez la AsInt méthode. Si la conversion réussit, vous pouvez ensuite ajouter les nombres.

Le tableau suivant répertorie certaines méthodes de conversion et de test courantes pour les variables.

Méthode

Description

Exemple


AsInt(), IsInt()

Convertit une chaîne qui représente un nombre entier (comme « 593 ») en entier.

Dim myIntNumber = 0
Dim myStringNum = "539"
If myStringNum.IsInt() Then
    myIntNumber = myStringNum.AsInt()
End If

AsBool(), IsBool()

Convertit une chaîne comme « true » ou « false » en type booléen.

Dim myStringBool = "True"
Dim myVar = myStringBool.AsBool()

AsFloat(), IsFloat()

Convertit une chaîne qui a une valeur décimale comme « 1.3 » ou « 7.439 » en nombre à virgule flottante.

Dim myStringFloat = "41.432895"
Dim myFloatNum = myStringFloat.AsFloat()

AsDecimal(), IsDecimal()

Convertit une chaîne qui a une valeur décimale comme « 1.3 » ou « 7.439 » en nombre décimal. (Dans ASP.NET, un nombre décimal est plus précis qu’un nombre à virgule flottante.)

Dim myStringDec = "10317.425"
Dim myDecNum = myStringDec.AsDecimal()

AsDateTime(), IsDateTime()

Convertit une chaîne qui représente une valeur de date et d’heure en type ASP.NETDateTime.

Dim myDateString = "12/27/2012"
Dim newDate = myDateString.AsDateTime()

ToString()

Convertit tout autre type de données en chaîne.

Dim num1 As Integer = 17
Dim num2 As Integer = 76

' myString is set to 1776
Dim myString as String = num1.ToString() & _
    num2.ToString()

Opérateurs

Un opérateur est un mot clé ou un caractère qui indique ASP.NET quel type de commande effectuer dans une expression. Visual Basic prend en charge de nombreux opérateurs, mais vous n’avez besoin de reconnaître que quelques-uns pour commencer à développer ASP.NET pages web. Le tableau suivant récapitule les opérateurs les plus courants.

Opérateur

Description

Exemples


+ - * /

Opérateurs mathématiques utilisés dans les expressions numériques.

@(5 + 13)

Dim netWorth = 150000
Dim newTotal = netWorth * 2
@(newTotal / 2)

=

Affectation et égalité. Selon le contexte, affectez la valeur à droite d’une instruction à l’objet sur le côté gauche ou vérifie les valeurs pour l’égalité.

Dim age = 17

Dim income = Request("AnnualIncome")

<>

Inégalité Retourne True si les valeurs ne sont pas égales.

Dim theNum = 13
If theNum <> 15 Then
    ' Do something.
End If

< > <= >=

Inférieur à, supérieur à, inférieur ou égal, supérieur ou égal à celui-ci.

If 2 < 3 Then
    ' Do something.
End If

Dim currentCount = 12
If currentCount >= 12 Then
    ' Do something.
End If

&

Concaténation, utilisée pour joindre des chaînes.

' The displayed result is "abcdef".
@("abc" & "def")

+= -=

Les opérateurs d’incrémentation et de décrémentation, qui ajoutent et soustraient respectivement 1 à partir d’une variable.

Dim theCount As Integer = 0
theCount += 1 ' Adds 1 to count

.

Point. Utilisé pour distinguer les objets et leurs propriétés et méthodes.

Dim myUrl = Request.Url
Dim count = Request("Count").AsInt()

()

Parenthèses. Utilisé pour regrouper des expressions, transmettre des paramètres à des méthodes et accéder aux membres des tableaux et des collections.

@(3 + 7)

@Request.MapPath(Request.FilePath)

Not

Not. Inverse une valeur vraie à false et vice versa. Généralement utilisé comme un moyen court pour tester False (autrement dit, pour non True).

Dim taskCompleted As Boolean = False
' Processing.
If Not taskCompleted Then 
    ' Continue processing
End If

AndAlso OrElse

LOGIQUE AND et OR, qui sont utilisés pour lier des conditions ensemble.

Dim myTaskCompleted As Boolean = false
Dim totalCount As Integer = 0          
' Processing.
If (Not myTaskCompleted) AndAlso _
         totalCount < 12 Then 
    ' Continue processing.
End If

Utilisation des chemins de fichiers et de dossiers dans le code

Vous allez souvent utiliser des chemins de fichiers et de dossiers dans votre code. Voici un exemple de structure de dossiers physiques pour un site web, car il peut apparaître sur votre ordinateur de développement :

C:\WebSites\MyWebSite default.cshtml datafile.txt \images Logo.jpg \styles Styles.css

Voici quelques détails essentiels sur les URL et les chemins d’accès :

  • Une URL commence par un nom de domaine (http://www.example.com) ou un nom de serveur (http://localhost, http://mycomputer).
  • Une URL correspond à un chemin physique sur un ordinateur hôte. Par exemple, http://myserver il peut correspondre au dossier C:\websites\mywebsite sur le serveur.
  • Un chemin virtuel est court pour représenter les chemins d’accès dans le code sans avoir à spécifier le chemin complet. Elle inclut la partie d’une URL qui suit le nom du domaine ou du serveur. Lorsque vous utilisez des chemins virtuels, vous pouvez déplacer votre code vers un autre domaine ou serveur sans avoir à mettre à jour les chemins d’accès.

Voici un exemple pour vous aider à comprendre les différences :

URL complète http://mycompanyserver/humanresources/CompanyPolicy.htm
Nom du serveur mycompanyserver
Chemin d'accès virtuel /humanresources/CompanyPolicy.htm
Chemin d’accès physique C:\mywebsites\humanresources\CompanyPolicy.htm

La racine virtuelle est /, comme la racine de votre lecteur C: est . (Les chemins d’accès aux dossiers virtuels utilisent toujours des barres obliques.) Le chemin d’accès virtuel d’un dossier n’a pas besoin d’avoir le même nom que le dossier physique ; il peut s’agir d’un alias. (Sur les serveurs de production, le chemin virtuel correspond rarement à un chemin physique exact.)

Lorsque vous utilisez des fichiers et des dossiers dans le code, vous devez parfois référencer le chemin d’accès physique et parfois un chemin d’accès virtuel, en fonction des objets que vous utilisez. ASP.NET vous donne ces outils pour travailler avec des chemins de fichier et de dossier dans le code : la Server.MapPath méthode et l’opérateur et Href la ~ méthode.

Conversion de chemins virtuels en chemins physiques : méthode Server.MapPath

La Server.MapPath méthode convertit un chemin virtuel (comme /default.cshtml) en chemin physique absolu (comme C:\WebSites\MyWebSiteFolder\default.cshtml). Vous utilisez cette méthode chaque fois que vous avez besoin d’un chemin physique complet. Il s’agit généralement de la lecture ou de l’écriture d’un fichier texte ou d’un fichier image sur le serveur web.

En règle générale, vous ne connaissez pas le chemin physique absolu de votre site sur le serveur d’un site d’hébergement. Cette méthode peut donc convertir le chemin d’accès que vous connaissez ( le chemin virtuel ) en chemin d’accès correspondant sur le serveur pour vous. Vous transmettez le chemin d’accès virtuel à un fichier ou un dossier à la méthode et retourne le chemin d’accès physique :

@Code
    Dim dataFilePath = "~/dataFile.txt"
End Code    

<!-- Displays a physical path C:\Websites\MyWebSite\datafile.txt  --> 
<p>@Server.MapPath(dataFilePath)</p>

Référencement de la racine virtuelle : l’opérateur ~ et la méthode Href

Dans un fichier .cshtml ou .vbhtml , vous pouvez référencer le chemin d’accès racine virtuel à l’aide de l’opérateur ~ . Cela est très pratique, car vous pouvez déplacer des pages dans un site, et les liens qu’ils contiennent vers d’autres pages ne seront pas rompus. Il est également pratique dans le cas où vous déplacez votre site web vers un autre emplacement. Voici quelques exemples :

@Code
    Dim myImagesFolder = "~/images"
    Dim myStyleSheet = "~/styles/StyleSheet.css"       
End Code

Si le site web est http://myserver/myapp, voici comment ASP.NET traitera ces chemins lorsque la page s’exécute :

  • myImagesFolder: http://myserver/myapp/images
  • myStyleSheet : http://myserver/myapp/styles/Stylesheet.css

(Vous ne verrez pas réellement ces chemins comme les valeurs de la variable, mais ASP.NET traitera les chemins comme si c’était ce qu’ils étaient.)

Vous pouvez utiliser l’opérateur dans le code du serveur (comme ci-dessus) et dans le ~ balisage, comme suit :

<!-- Examples of using the ~ operator in markup in ASP.NET Web Pages -->

<a href="~/Default">Home</a>
<img src="~/images/MyImages.png" />

Dans le balisage, vous utilisez l’opérateur ~ pour créer des chemins d’accès à des ressources telles que des fichiers image, d’autres pages web et des fichiers CSS. Lorsque la page s’exécute, ASP.NET examine la page (code et balisage) et résout toutes les ~ références au chemin approprié.

Logique conditionnelle et boucles

ASP.NET code serveur vous permet d’effectuer des tâches en fonction des conditions et d’écrire du code qui répète des instructions un nombre spécifique de fois, du code qui exécute une boucle).

Conditions de test

Pour tester une condition simple que vous utilisez l’instruction If...Then , qui retourne True ou False en fonction d’un test que vous spécifiez :

@Code
    Dim showToday = True
    If showToday Then
        DateTime.Today
    End If
End Code

Le If mot clé démarre un bloc. Le test réel (condition) suit le If mot clé et retourne true ou false. L’instruction If se termine par Then. Les instructions qui s’exécutent si le test est vrai sont placés entre If et End If. Une If instruction peut inclure un Else bloc qui spécifie les instructions à exécuter si la condition est false :

@Code
    Dim showToday = False
    If showToday Then
        DateTime.Today
    Else
        @<text>Sorry!</text>
    End If
End Code

Si une If instruction démarre un bloc de code, vous n’avez pas besoin d’utiliser les instructions normales Code...End Code pour inclure les blocs. Vous pouvez simplement ajouter @ au bloc, et cela fonctionnera. Cette approche fonctionne avec If d’autres mots clés de programmation Visual Basic suivis de blocs de code, y compris For, For Each, Do While, etc.

@If showToday Then
    DateTime.Today
Else
    @<text>Sorry!</text>
End If

Vous pouvez ajouter plusieurs conditions à l’aide d’un ou plusieurs ElseIf blocs :

@Code
    Dim theBalance = 4.99
    If theBalance = 0 Then
        @<p>You have a zero balance.</p>
    ElseIf theBalance > 0 AndAlso theBalance <= 5 Then
        ' If the balance is above 0 but less than
        ' or equal to $5, display this message.
        @<p>Your balance of $@theBalance is very low.</p>
    Else
        ' For balances greater than $5, display balance.
        @<p>Your balance is: $@theBalance</p>
    End If    
End Code

Dans cet exemple, si la première condition du If bloc n’est pas vraie, la ElseIf condition est vérifiée. Si cette condition est remplie, les instructions du ElseIf bloc sont exécutées. Si aucune des conditions n’est remplie, les instructions du Else bloc sont exécutées. Vous pouvez ajouter n’importe quel nombre de ElseIf blocs, puis fermer avec un Else bloc comme condition « tout le reste ».

Pour tester un grand nombre de conditions, utilisez un Select Case bloc :

@Code
    Dim weekday = "Wednesday"
    Dim greeting = ""
    
    Select Case weekday
        Case "Monday"
            greeting = "Ok, it's a marvelous Monday."
        Case "Tuesday"
            greeting = "It's a tremendous Tuesday."
        Case "Wednesday"
            greeting = "Wild Wednesday is here!"
        Case Else
            greeting = "It's some other day, oh well."
    End Select
End Code
<p>Since it is @weekday, the message for today is: @greeting</p>

La valeur à tester est entre parenthèses (dans l’exemple, la variable de semaine). Chaque test individuel utilise une Case instruction qui répertorie une valeur. Si la valeur d’une Case instruction correspond à la valeur de test, le code de ce Case bloc est exécuté.

Résultat des deux derniers blocs conditionnels affichés dans un navigateur :

Razor-Img10

Code de boucle

Vous devez souvent exécuter les mêmes instructions à plusieurs reprises. Pour ce faire, effectuez une boucle. Par exemple, vous exécutez souvent les mêmes instructions pour chaque élément dans une collection de données. Si vous savez exactement combien de fois vous voulez boucler, vous pouvez utiliser une For boucle. Ce type de boucle est particulièrement utile pour compter vers le haut ou le comptage vers le bas :

@For i = 10 To 20
    @<p>Item #: @i</p>
Next i

La boucle commence par le For mot clé, suivie de trois éléments :

  • Immédiatement après l’instruction For , vous déclarez une variable de compteur (vous n’avez pas besoin d’utiliser Dim) puis indiquez la plage, comme dans i = 10 to 20. Cela signifie que la variable i commence à compter à 10 et continue jusqu’à ce qu’elle atteigne 20 (inclusive).
  • Entre les instructions et Next le For contenu du bloc. Cela peut contenir une ou plusieurs instructions de code qui s’exécutent avec chaque boucle.
  • L’instruction Next i termine la boucle. Il incrémente le compteur et démarre l’itération suivante de la boucle.

La ligne de code entre les For lignes Next contient le code qui s’exécute pour chaque itération de la boucle. Le balisage crée un nouveau paragraphe (<p> élément) chaque fois et ajoute une ligne à la sortie, affichant la valeur d’i (le compteur). Lorsque vous exécutez cette page, l’exemple crée 11 lignes affichant la sortie, avec le texte de chaque ligne indiquant le numéro d’élément.

Razor-Img11

Si vous utilisez une collection ou un tableau, vous utilisez souvent une For Each boucle. Une collection est un groupe d’objets similaires et la For Each boucle vous permet d’effectuer une tâche sur chaque élément de la collection. Ce type de boucle est pratique pour les collections, car contrairement à une For boucle, vous n’avez pas besoin d’incrémenter le compteur ou de définir une limite. Au lieu de cela, le For Each code de boucle passe simplement par la collection jusqu’à ce qu’il soit terminé.

Cet exemple retourne les éléments de la Request.ServerVariables collection (qui contient des informations sur votre serveur web). Il utilise une For Each boucle pour afficher le nom de chaque élément en créant un nouvel <li> élément dans une liste à puces HTML.

<ul>
@For Each myItem In Request.ServerVariables
    @<li>@myItem</li>
Next myItem
</ul>

Le For Each mot clé est suivi d’une variable qui représente un élément unique dans la collection (dans l’exemple), myItemsuivi du In mot clé, suivi de la collection à parcourir. Dans le corps de la For Each boucle, vous pouvez accéder à l’élément actuel à l’aide de la variable que vous avez déclarée précédemment.

Razor-Img12

Pour créer une boucle plus à usage général, utilisez l’instruction Do While :

@Code
    Dim countNum = 0
    Do While countNum < 50
        countNum += 1
        @<p>Line #@countNum: </p>
    Loop
End Code

Cette boucle commence par le Do While mot clé, suivie d’une condition, suivie du bloc à répéter. Les boucles incrémentent généralement (ajouter à) ou décrémentent (soustraction) une variable ou un objet utilisé pour le comptage. Dans l’exemple, l’opérateur += ajoute 1 à la valeur d’une variable chaque fois que la boucle s’exécute. (Pour décrémenter une variable dans une boucle qui compte vers le bas, vous utiliseriez l’opérateur -=de décrémentation .)

Objets et collections

Presque tout dans un site web ASP.NET est un objet, y compris la page web elle-même. Cette section décrit certains objets importants que vous utiliserez fréquemment dans votre code.

Objets de page

L’objet le plus simple dans ASP.NET est la page. Vous pouvez accéder directement aux propriétés de l’objet de page sans aucun objet éligible. Le code suivant obtient le chemin d’accès du fichier de la page à l’aide de l’objet Request de la page :

@Code
    Dim path = Request.FilePath
End Code

Vous pouvez utiliser des propriétés de l’objet Page pour obtenir beaucoup d’informations, telles que :

  • Request. Comme vous l’avez déjà vu, il s’agit d’une collection d’informations sur la requête actuelle, notamment le type de navigateur qui a effectué la requête, l’URL de la page, l’identité de l’utilisateur, etc.

  • Response. Il s’agit d’une collection d’informations sur la réponse (page) qui sera envoyée au navigateur lorsque le code du serveur a terminé l’exécution. Par exemple, vous pouvez utiliser cette propriété pour écrire des informations dans la réponse.

    @Code
        ' Access the page's Request object to retrieve the URL.
        Dim pageUrl = Request.Url
    End Code
        <a href="@pageUrl">My page</a>
    

Objets de collection (tableaux et dictionnaires)

Une collection est un groupe d’objets de même type, comme une collection d’objets Customer à partir d’une base de données. ASP.NET contient de nombreuses collections intégrées, comme la Request.Files collection.

Vous allez souvent utiliser des données dans des collections. Deux types de collection courants sont le tableau et le dictionnaire. Un tableau est utile lorsque vous souhaitez stocker une collection d’éléments similaires, mais ne souhaitez pas créer une variable distincte pour contenir chaque élément :

<h3>Team Members</h3>
@Code
    Dim teamMembers() As String = {"Matt", "Joanne", "Robert", "Nancy"}
    For Each name In teamMembers
        @<p>@name</p>
    Next name
End Code

Avec des tableaux, vous déclarez un type de données spécifique, tel que String, Integerou DateTime. Pour indiquer que la variable peut contenir un tableau, vous ajoutez des parenthèses au nom de la variable dans la déclaration (par exemple Dim myVar() As String). Vous pouvez accéder aux éléments d’un tableau à l’aide de leur position (index) ou à l’aide de l’instruction For Each . Les index de tableau sont de base zéro , c’est-à-dire que le premier élément est à la position 0, le deuxième élément est à la position 1, et ainsi de suite.

@Code
    Dim teamMembers() As String = {"Matt", "Joanne", "Robert", "Nancy"}
    @<p>The number of names in the teamMembers array: @teamMembers.Length </p>
    @<p>Robert is now in position: @Array.IndexOf(teamMembers, "Robert")</p>
    @<p>The array item at position 2 (zero-based) is @teamMembers(2)</p>
    @<h3>Current order of team members in the list</h3>
    For Each name In teamMembers
        @<p>@name</p>
    Next name
    @<h3>Reversed order of team members in the list</h3>
    Array.Reverse(teamMembers)
    For Each reversedItem In teamMembers
        @<p>@reversedItem</p>
    Next reversedItem
End Code

Vous pouvez déterminer le nombre d’éléments d’un tableau en obtenant sa Length propriété. Pour obtenir la position d’un élément spécifique dans le tableau (autrement dit, pour rechercher le tableau), utilisez la Array.IndexOf méthode. Vous pouvez également effectuer des opérations comme inverser le contenu d’un tableau (la Array.Reverse méthode) ou trier le contenu (la Array.Sort méthode).

Sortie du code de tableau de chaînes affiché dans un navigateur :

Razor-Img13

Un dictionnaire est une collection de paires clé/valeur, où vous fournissez la clé (ou le nom) pour définir ou récupérer la valeur correspondante :

@Code
    Dim myScores = New Dictionary(Of String, Integer)()
    myScores.Add("test1", 71)
    myScores.Add("test2", 82)
    myScores.Add("test3", 100)
    myScores.Add("test4", 59)
End Code
<p>My score on test 3 is: @myScores("test3")%</p>
@Code 
    myScores("test4") = 79
End Code
<p>My corrected score on test 4 is: @myScores("test4")%</p>

Pour créer un dictionnaire, vous utilisez le New mot clé pour indiquer que vous créez un Dictionary objet. Vous pouvez affecter un dictionnaire à une variable à l’aide du Dim mot clé. Vous indiquez les types de données des éléments du dictionnaire à l’aide de parenthèses ( ( ) ). À la fin de la déclaration, vous devez ajouter une autre paire de parenthèses, car il s’agit en fait d’une méthode qui crée un dictionnaire.

Pour ajouter des éléments au dictionnaire, vous pouvez appeler la Add méthode de la variable de dictionnaire (myScores dans ce cas), puis spécifier une clé et une valeur. Vous pouvez également utiliser des parenthèses pour indiquer la clé et effectuer une affectation simple, comme dans l’exemple suivant :

@Code
    myScores("test4") = 79
End Code

Pour obtenir une valeur à partir du dictionnaire, vous spécifiez la clé entre parenthèses :

@myScores("test4")

Appel de méthodes avec des paramètres

Comme vous l’avez vu précédemment dans cet article, les objets que vous programmez avec des méthodes. Par exemple, un Database objet peut avoir une Database.Connect méthode. De nombreuses méthodes ont également un ou plusieurs paramètres. Un paramètre est une valeur que vous passez à une méthode pour permettre à la méthode d’effectuer sa tâche. Par exemple, examinez une déclaration pour la Request.MapPath méthode, qui prend trois paramètres :

Public Overridable Function MapPath (virtualPath As String, _
    baseVirtualDir As String, _
    allowCrossAppMapping As Boolean)

Cette méthode retourne le chemin d’accès physique sur le serveur qui correspond à un chemin d’accès virtuel spécifié. Les trois paramètres de la méthode sont virtualPath, baseVirtualDiret allowCrossAppMapping. (Notez que dans la déclaration, les paramètres sont répertoriés avec les types de données des données qu’ils accepteront.) Lorsque vous appelez cette méthode, vous devez fournir des valeurs pour les trois paramètres.

Lorsque vous utilisez Visual Basic avec la syntaxe Razor, vous avez deux options pour passer des paramètres à une méthode : les paramètres positionnels ou les paramètres nommés. Pour appeler une méthode à l’aide de paramètres positionnels, vous transmettez les paramètres dans un ordre strict spécifié dans la déclaration de méthode. (Vous connaissez généralement cet ordre en lisant la documentation de la méthode.) Vous devez suivre l’ordre et vous ne pouvez ignorer aucun des paramètres, si nécessaire, passer une chaîne vide ("") ou null pour un paramètre positionnel pour lequel vous n’avez pas de valeur.

L’exemple suivant suppose que vous disposez d’un dossier nommé scripts sur votre site web. Le code appelle la Request.MapPath méthode et transmet des valeurs pour les trois paramètres dans l’ordre correct. Il affiche ensuite le chemin mappé obtenu.

@Code
    ' Pass parameters to a method using positional parameters.
    Dim myPathPositional = Request.MapPath("/scripts", "/", true)
End Code
<p>@myPathPositional</p>

Lorsqu’il existe de nombreux paramètres pour une méthode, vous pouvez conserver votre code plus propre et plus lisible à l’aide de paramètres nommés. Pour appeler une méthode à l’aide de paramètres nommés, spécifiez le nom du paramètre suivi := , puis indiquez la valeur. Un avantage des paramètres nommés est que vous pouvez les ajouter dans n’importe quel ordre souhaité. (Un inconvénient est que l’appel de méthode n’est pas aussi compact.)

L’exemple suivant appelle la même méthode que ci-dessus, mais utilise des paramètres nommés pour fournir les valeurs :

@Code
    ' Pass parameters to a method using named parameters.
    Dim myPathNamed = Request.MapPath(baseVirtualDir:= "/", allowCrossAppMapping:= true, virtualPath:= "/scripts")
End Code
<p>@myPathNamed</p>

Comme vous pouvez le voir, les paramètres sont passés dans un ordre différent. Toutefois, si vous exécutez l’exemple précédent et cet exemple, ils retournent la même valeur.

Gestion des erreurs

instructions Try-Catch

Vous aurez souvent des instructions dans votre code qui peuvent échouer pour des raisons extérieures à votre contrôle. Par exemple :

  • Si votre code tente d’ouvrir, de créer, de lire ou d’écrire un fichier, toutes sortes d’erreurs peuvent se produire. Le fichier souhaité n’existe peut-être pas, il peut être verrouillé, le code n’a peut-être pas d’autorisations, et ainsi de suite.
  • De même, si votre code tente de mettre à jour des enregistrements dans une base de données, il peut y avoir des problèmes d’autorisations, la connexion à la base de données peut être supprimée, les données à enregistrer peuvent ne pas être valides, et ainsi de suite.

En termes de programmation, ces situations sont appelées exceptions. Si votre code rencontre une exception, il génère (lève) un message d’erreur qui est, au mieux, ennuyeux pour les utilisateurs.

Razor-Img14

Dans les situations où votre code peut rencontrer des exceptions et pour éviter les messages d’erreur de ce type, vous pouvez utiliser Try/Catch des instructions. Dans l’instruction Try , vous exécutez le code que vous vérifiez. Dans une ou plusieurs Catch instructions, vous pouvez rechercher des erreurs spécifiques (types spécifiques d’exceptions) qui peuvent s’être produites. Vous pouvez inclure autant d’instructions Catch que nécessaire pour rechercher des erreurs que vous prévoyez.

Notes

Nous vous recommandons d’éviter d’utiliser la méthode dans Try/Catch les Response.Redirect instructions, car elle peut provoquer une exception dans votre page.

L’exemple suivant montre une page qui crée un fichier texte sur la première demande, puis affiche un bouton qui permet à l’utilisateur d’ouvrir le fichier. L’exemple utilise délibérément un nom de fichier incorrect afin qu’il provoque une exception. Le code inclut Catch des instructions pour deux exceptions possibles : FileNotFoundException, qui se produit si le nom de fichier est incorrect et DirectoryNotFoundException, qui se produit si ASP.NET ne trouve même pas le dossier. (Vous pouvez supprimer les marques de commentaire d’une instruction dans l’exemple pour voir comment elle s’exécute quand tout fonctionne correctement.)

Si votre code n’a pas géré l’exception, une page d’erreur semblable à la capture d’écran précédente s’affiche. Toutefois, la Try/Catch section permet d’empêcher l’utilisateur de voir ces types d’erreurs.

@Code
    Dim dataFilePath = "~/dataFile.txt"
    Dim fileContents = ""
    Dim physicalPath = Server.MapPath(dataFilePath)
    Dim userMessage = "Hello world, the time is " + DateTime.Now
    Dim userErrMsg = ""
    Dim errMsg = ""
    
    If IsPost Then
        ' When the user clicks the "Open File" button and posts
        ' the page, try to open the file.
        Try
            ' This code fails because of faulty path to the file.
            fileContents = File.ReadAllText("c:\batafile.txt")
            
            ' This code works. To eliminate error on page, 
            ' comment the above line of code and uncomment this one.
            ' fileContents = File.ReadAllText(physicalPath)
            
        Catch ex As FileNotFoundException
            ' You can use the exception object for debugging, logging, etc.
            errMsg = ex.Message
            ' Create a friendly error message for users.
            userErrMsg = "The file could not be opened, please contact " _
                & "your system administrator."
                
        Catch ex As DirectoryNotFoundException
            ' Similar to previous exception.
            errMsg = ex.Message
            userErrMsg = "The file could not be opened, please contact " _
                & "your system administrator."
        End Try
    Else
        ' The first time the page is requested, create the text file.
        File.WriteAllText(physicalPath, userMessage)
    End If
End Code
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Try-Catch Statements</title>
    </head>
    <body>  
    <form method="POST" action="" >
      <input type="Submit" name="Submit" value="Open File"/>
    </form>
    
    <p>@fileContents</p>
    <p>@userErrMsg</p>
    
    </body>
</html>

Ressources supplémentaires

Documentation de référence