Freigeben über


Einführung in ASP.NET-Webprogrammierung mithilfe der Razor-Syntax (Visual Basic).

von Tom FitzMacken

In diesem Artikel erhalten Sie eine Übersicht über die Programmierung mit ASP.NET Web Pages unter Verwendung der Razor-Syntax und Visual Basic. ASP.NET ist die Technologie von Microsoft zum Ausführen dynamischer Webseiten auf Webservern.

Was Sie lernen werden:

  • Die 8 wichtigsten Programmiertipps für die ersten Schritte mit der Programmierung ASP.NET Web Pages mit Razor-Syntax.
  • Grundlegende Programmierkonzepte, die Sie benötigen.
  • Worum es ASP.NET Servercode und die Razor-Syntax geht.

Softwareversionen

  • ASP.NET Web Pages (Razor) 3

Dieses Tutorial funktioniert auch mit ASP.NET Web Pages 2.

Die meisten Beispiele für die Verwendung von ASP.NET Web Pages mit Razor-Syntax verwenden C#. Die Razor-Syntax unterstützt aber auch Visual Basic. Um eine ASP.NET Webseite in Visual Basic zu programmieren, erstellen Sie eine Webseite mit der Dateinamenerweiterung VBHTML und fügen dann Visual Basic-Code hinzu. In diesem Artikel erhalten Sie eine Übersicht über die Arbeit mit der Visual Basic-Sprache und -Syntax zum Erstellen ASP.NET Webseiten.

Hinweis

Die Standardwebsitevorlagen für Microsoft WebMatrix (Bakery, Photo Gallery und Starter Site usw.) sind in C# und Visual Basic-Versionen verfügbar. Sie können die Visual Basic-Vorlagen als NuGet-Pakete installieren. Websitevorlagen werden im Stammordner Ihrer Website in einem Ordner namens Microsoft Templates installiert.

Die 8 besten Programmiertipps

In diesem Abschnitt werden einige Tipps aufgeführt, die Sie unbedingt kennen müssen, wenn Sie mit dem Schreiben ASP.NET Servercode mit der Razor-Syntax beginnen.

1. Sie fügen code zu einer Seite mit dem @-Zeichen hinzu.

Das @ Zeichen startet Inlineausdrücke, Blöcke mit einer einzelnen Anweisung und Blöcke mit mehreren Anweisungen:

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

Das in einem Browser angezeigte Ergebnis:

Razor-Img1

Tipp

HTML-Codierung

Wenn Sie Inhalte auf einer Seite mit dem @ Zeichen anzeigen, wie in den vorherigen Beispielen, ASP.NET die Ausgabe HTML-codiert. Dadurch werden reservierte HTML-Zeichen (z < . B. und > und &) durch Codes ersetzt, mit denen die Zeichen als Zeichen auf einer Webseite angezeigt werden können, anstatt als HTML-Tags oder -Entitäten interpretiert zu werden. Ohne HTML-Codierung wird die Ausgabe Ihres Servercodes möglicherweise nicht ordnungsgemäß angezeigt, und eine Seite kann Sicherheitsrisiken offenlegen.

Wenn Sie HTML-Markup ausgeben möchten, das Tags als Markup rendert (z. B <p></p> . für einen Absatz oder <em></em> zum Hervorheben von Text), lesen Sie den Abschnitt Kombinieren von Text, Markup und Code in Codeblöcken weiter unten in diesem Artikel.

Weitere Informationen zur HTML-Codierung finden Sie unter Arbeiten mit HTML-Formularen in ASP.NET Web Pages Websites.

2. Sie schließen Codeblöcke in Code ein... Endcode

Ein Codeblock enthält eine oder mehrere Codeanweisungen und wird mit den Schlüsselwörtern Code und End Codeeingeschlossen. Platzieren Sie die öffnende Code Schlüsselwort (keyword) unmittelbar hinter dem @ Zeichen – es darf keine Leerzeichen zwischen ihnen geben.

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

Das in einem Browser angezeigte Ergebnis:

Razor-Img2

3. Innerhalb eines Blocks beenden Sie jede Code-Anweisung mit einem Zeilenumbruch.

In einem Visual Basic-Codeblock endet jede Anweisung mit einem Zeilenumbruch. (Weiter unten im Artikel sehen Sie eine Möglichkeit, eine lange Code-Anweisung bei Bedarf in mehrere Zeilen umzuschließen.)

<!-- 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. Sie verwenden Variablen zum Speichern von Werten

Sie können Werte in einer Variablen speichern, einschließlich Zeichenfolgen, Zahlen und Datumsangaben usw. Sie erstellen eine neue Variable mit dem Dim Schlüsselwort (keyword). Sie können Variablenwerte direkt in eine Seite einfügen, indem Sie verwenden @.

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

Das in einem Browser angezeigte Ergebnis:

Razor-Img3

5. Sie schließen literale Zeichenfolgenwerte in doppelte Anführungszeichen ein.

Eine Zeichenfolge ist eine Sequenz von Zeichen, die als Text behandelt werden. Um eine Zeichenfolge anzugeben, schließen Sie sie in doppelte Anführungszeichen ein:

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

Um doppelte Anführungszeichen in einen Zeichenfolgenwert einzubetten, fügen Sie zwei doppelte Anführungszeichen ein. Wenn das doppelte Anführungszeichen einmal in der Seitenausgabe angezeigt werden soll, geben Sie es wie "" in der Zeichenfolge in Anführungszeichen ein, und wenn es zweimal angezeigt werden soll, geben Sie es in der Zeichenfolge in """" Anführungszeichen ein.

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

Das in einem Browser angezeigte Ergebnis:

Razor-Img4

6. Bei Visual Basic-Code wird die Groß-/Kleinschreibung nicht beachtet.

Bei der Visual Basic-Sprache wird die Groß-/Kleinschreibung nicht beachtet. Programmierschlüsselwörter (wie Dim, Ifund True) und Variablennamen (z myString. B subTotal. oder ) können in jedem Fall geschrieben werden.

Die folgenden Codezeilen weisen der Variablen lastname einen Wert unter Verwendung eines Kleinbuchstabennamens zu und geben den Variablenwert dann unter Verwendung eines Großbuchstabens an die Seite aus.

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

Das in einem Browser angezeigte Ergebnis:

vb-syntax-5

7. Ein Großteil Ihrer Programmierung umfasst die Arbeit mit Objekten.

Ein Objekt stellt eine Sache dar, mit der Sie programmieren können– eine Seite, ein Textfeld, eine Datei, ein Bild, eine Webanforderung, eine E-Mail-Nachricht, einen Kundendatensatz (Datenbankzeile) usw. Objekte verfügen über Eigenschaften, die ihre Eigenschaften beschreiben– ein Textfeldobjekt verfügt über eine Text -Eigenschaft, ein Anforderungsobjekt über eine Url -Eigenschaft, eine E-Mail-Nachricht über eine From -Eigenschaft und ein Kundenobjekt über eine FirstName -Eigenschaft. Objekte verfügen auch über Methoden, die die "Verben" sind, die sie ausführen können. Beispiele hierfür sind die Methode eines Dateiobjekts Save , die Methode eines Bildobjekts Rotate und die Methode eines E-Mail-Objekts Send .

Sie arbeiten häufig mit dem Request -Objekt, das Ihnen Informationen wie die Werte der Formularfelder auf der Seite (Textfelder usw.), den Typ des Browsers, der die Anforderung gestellt hat, die URL der Seite, die Benutzeridentität usw. liefert. In diesem Beispiel wird gezeigt, wie Sie auf eigenschaften des Request -Objekts zugreifen und die -Methode des Request -Objekts aufrufen, wodurch Sie den absoluten Pfad der Seite auf dem Server erhaltenMapPath:

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

Das in einem Browser angezeigte Ergebnis:

Razor-Img5

8. Sie können Code schreiben, der Entscheidungen trifft.

Ein wichtiges Feature dynamischer Webseiten ist, dass Sie basierend auf Bedingungen bestimmen können, was zu tun ist. Dies geschieht am häufigsten mit der -Anweisung (und optionalen IfElse Anweisung).

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

Die -Anweisung If IsPost ist eine Kurzform zum Schreiben If IsPost = Truevon . Zusammen mit If -Anweisungen gibt es eine Vielzahl von Möglichkeiten zum Testen von Bedingungen, Wiederholen von Codeblöcken usw., die weiter unten in diesem Artikel beschrieben werden.

Das Ergebnis, das in einem Browser angezeigt wird (nach dem Klicken auf Senden):

Razor-Img6

Tipp

HTTP GET- und POST-Methoden und die IsPost-Eigenschaft

Das für Webseiten verwendete Protokoll (HTTP) unterstützt eine sehr begrenzte Anzahl von Methoden ("Verben"), die zum Senden von Anforderungen an den Server verwendet werden. Die beiden häufigsten sind GET, das zum Lesen einer Seite verwendet wird, und POST, das zum Übermitteln einer Seite verwendet wird. Wenn ein Benutzer zum ersten Mal eine Seite anfordert, wird die Seite im Allgemeinen mithilfe von GET angefordert. Wenn der Benutzer ein Formular ausfüllt und dann auf Senden klickt, sendet der Browser eine POST-Anforderung an den Server.

Bei der Webprogrammierung ist es oft hilfreich zu wissen, ob eine Seite als GET oder als POST angefordert wird, damit Sie wissen, wie die Seite verarbeitet wird. In ASP.NET Web Pages können Sie die IsPost -Eigenschaft verwenden, um zu sehen, ob es sich bei einer Anforderung um eine GET- oder eine POST-Anforderung handelt. Wenn es sich bei der Anforderung um einen POST-Wert handelt, gibt die IsPost Eigenschaft true zurück, und Sie können beispielsweise die Werte von Textfeldern in einem Formular lesen. Viele Beispiele, die Sie sehen, zeigen, wie Sie die Seite je nach Wert von IsPostunterschiedlich verarbeiten.

Ein einfaches Codebeispiel

In diesem Verfahren wird gezeigt, wie Sie eine Seite erstellen, die grundlegende Programmiertechniken veranschaulicht. Im Beispiel erstellen Sie eine Seite, auf der Benutzer zwei Zahlen eingeben können, diese dann hinzugefügt und das Ergebnis angezeigt wird.

  1. Erstellen Sie in Ihrem Editor eine neue Datei, und nennen Sie sie AddNumbers.vbhtml.

  2. Kopieren Sie den folgenden Code und markup in die Seite, und ersetzen Sie alle bereits auf der Seite vorhandenen Elemente.

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

    Beachten Sie folgendes:

    • Das @ Zeichen startet den ersten Codeblock auf der Seite und geht der totalMessage Variablen voran, die unten eingebettet ist.
    • Der Block oben auf der Seite ist in Code...End Codeeingeschlossen.
    • Die Variablen total, num1, num2und totalMessage speichern mehrere Zahlen und eine Zeichenfolge.
    • Der der totalMessage Variablen zugewiesene Literalzeichenfolgenwert befindet sich in doppelten Anführungszeichen.
    • Da bei Visual Basic-Code die Groß-/Kleinschreibung nicht beachtet wird, muss der Name, wenn die totalMessage Variable am unteren Rand der Seite verwendet wird, nur mit der Schreibweise der Variablendeklaration oben auf der Seite übereinstimmen. Die Groß-/Kleinschreibung spielt keine Rolle.
    • Der Ausdruck num1.AsInt() + num2.AsInt() zeigt, wie sie mit Objekten und Methoden arbeiten. Die AsInt -Methode für jede Variable konvertiert die von einem Benutzer eingegebene Zeichenfolge in eine ganze Zahl (eine ganze Zahl), die hinzugefügt werden kann.
    • Das <form> Tag enthält ein method="post" -Attribut. Dies gibt an, dass die Seite mithilfe der HTTP POST-Methode an den Server gesendet wird, wenn der Benutzer auf Hinzufügen klickt. Wenn die Seite übermittelt wird, wird der Code If IsPost als true ausgewertet, und der bedingte Code wird ausgeführt, wobei das Ergebnis des Hinzufügens der Zahlen angezeigt wird.
  3. Speichern Sie die Seite, und führen Sie sie in einem Browser aus. (Stellen Sie sicher, dass die Seite im Arbeitsbereich Dateien ausgewählt ist , bevor Sie sie ausführen.) Geben Sie zwei ganze Zahlen ein, und klicken Sie dann auf die Schaltfläche Hinzufügen .

    Razor-Img7

Visual Basic-Sprache und -Syntax

Zuvor haben Sie ein einfaches Beispiel für das Erstellen einer ASP.NET Webseite und das Hinzufügen von Servercode zum HTML-Markup gesehen. Hier lernen Sie die Grundlagen der Verwendung von Visual Basic zum Schreiben von ASP.NET Servercode mithilfe der Razor-Syntax kennen, d. h. die Regeln der Programmiersprache.

Wenn Sie Erfahrung mit der Programmierung haben (insbesondere wenn Sie C, C++, C#, Visual Basic oder JavaScript verwendet haben), wird Ihnen vieles von dem vertraut sein, was Sie hier lesen. Sie müssen sich wahrscheinlich nur damit vertraut machen, wie WebMatrix-Code zum Markup in VBHTML-Dateien hinzugefügt wird.

Kombinieren von Text, Markup und Code in Codeblöcken

In Servercodeblöcken möchten Sie häufig Text und Markup auf der Seite ausgeben. Wenn ein Servercodeblock Text enthält, der keinen Code ist und stattdessen so gerendert werden soll, muss ASP.NET in der Lage sein, diesen Text vom Code zu unterscheiden. Hierzu stehen mehrere Vorgehensweisen zur Verfügung.

  • Schließen Sie den Text in ein HTML-Blockelement wie <p></p> oder <em></em>ein:

    @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
    

    Das HTML-Element kann Text, zusätzliche HTML-Elemente und Servercodeausdrücke enthalten. Wenn ASP.NET das öffnende HTML-Tag sieht (z. B <p>. ), rendert es alles, was das Element und seinen Inhalt ist, im Browser (und löst die Servercodeausdrücke auf).

  • Verwenden Sie den @: Operator oder das <text> -Element. Gibt @: eine einzelne Inhaltszeile aus, die Nur-Text- oder nicht übereinstimmende HTML-Tags enthält. Das <text> -Element umschließt mehrere Zeilen zur Ausgabe. Diese Optionen sind nützlich, wenn Sie kein HTML-Element als Teil der Ausgabe rendern möchten.

    @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
    

    Im folgenden Beispiel wird das vorherige Beispiel wiederholt, es wird jedoch ein einzelnes Paar von <text> Tags verwendet, um den zu rendernden Text einzuschließen.

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

    Im folgenden Beispiel umschließen die <text> Tags und </text> drei Zeilen, die alle nicht markierten Text und nicht übereinstimmende HTML-Tags (<br />) sowie Servercode und übereinstimmende HTML-Tags enthalten. Auch hier können Sie jeder Zeile einzeln den @: Operator vorangehen. In beiden Richtungen funktioniert das.

    @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
    

    Hinweis

    Wenn Sie Text wie in diesem Abschnitt gezeigt ausgeben – mit einem HTML-Element, dem @: Operator oder dem <text> -Element –, ASP.NET die Ausgabe nicht HTML-codiert. (Wie bereits erwähnt, codiert ASP.NET die Ausgabe von Servercodeausdrücken und Servercodeblöcken, denen vorangestellt @ist, außer in den in diesem Abschnitt genannten Sonderfällen.)

Whitespace

Zusätzliche Leerzeichen in einer -Anweisung (und außerhalb eines Zeichenfolgenliterals) wirken sich nicht auf die Anweisung aus:

@Code Dim personName =    "Smith"    End Code

Aufteilen von langen Anweisungen in mehrere Zeilen

Sie können eine lange Code-Anweisung in mehrere Zeilen aufteilen, indem Sie den Unterstrich _ (der in Visual Basic als Fortsetzungszeichen bezeichnet wird) nach jeder Codezeile verwenden. Um eine Anweisung auf die nächste Zeile umzuteilen, fügen Sie am Ende der Zeile ein Leerzeichen und dann das Fortsetzungszeichen hinzu. Fahren Sie mit der Anweisung in der nächsten Zeile fort. Sie können Anweisungen in so viele Zeilen umschließen, wie Sie benötigen, um die Lesbarkeit zu verbessern. Die folgenden Anweisungen sind gleich:

@Code
    Dim familyName _
    =  "Smith" 
End Code

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

Sie können jedoch keine Zeile in der Mitte eines Zeichenfolgenliterals umschließen. Das folgende Beispiel funktioniert nicht:

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

Um eine lange Zeichenfolge zu kombinieren, die wie den obigen Code in mehrere Zeilen umschließt, müssen Sie den Verkettungsoperator (&) verwenden, den Sie später in diesem Artikel sehen werden.

Codekommentare

Mit Kommentaren können Sie Notizen für sich selbst oder andere hinterlassen. Razor-Syntaxkommentare haben das @* Präfix und enden mit *@.

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

Innerhalb von Codeblöcken können Sie die Razor-Syntaxkommentare verwenden, oder Sie können ein gewöhnliches Visual Basic-Kommentarzeichen verwenden, bei dem es sich um ein einzelnes Anführungszeichen (') handelt, das jeder Zeile vorangestellt ist.

@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

Variablen

Eine Variable ist ein benanntes Objekt, das Sie zum Speichern von Daten verwenden. Sie können Variablen beliebig benennen, aber der Name muss mit einem alphabetischen Zeichen beginnen und darf keine Leerzeichen oder reservierten Zeichen enthalten. In Visual Basic spielt die Groß- und Kleinschreibung der Buchstaben in einem Variablennamen keine Rolle.

Variablen und Datentypen

Eine Variable kann einen bestimmten Datentyp aufweisen, der angibt, welche Art von Daten in der Variablen gespeichert ist. Sie können Zeichenfolgenvariablen verwenden, die Zeichenfolgenwerte speichern (z. B. "Hello World"), ganzzahlige Variablen, die Ganzzahlwerte (z. B. 3 oder 79) speichern, und Datumsvariablen, die Datumswerte in einer Vielzahl von Formaten speichern (z. B. 12.04.2012 oder März 2009). Und es gibt viele andere Datentypen, die Sie verwenden können.

Sie müssen jedoch keinen Typ für eine Variable angeben. In den meisten Fällen können ASP.NET den Typ basierend auf der Verwendung der Daten in der Variablen ermitteln. (Gelegentlich müssen Sie einen Typ angeben. Es werden Beispiele angezeigt, in denen dies zutrifft.)

Um eine Variable ohne Angabe eines Typs zu deklarieren, verwenden Sie Dim plus den Variablennamen (für instance, Dim myVar). Um eine Variable mit einem Typ zu deklarieren, verwenden Sie Dim plus den Variablennamen, gefolgt von As und dann dem Typnamen (für instance, 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

Das folgende Beispiel zeigt einige Inlineausdrücke, die die Variablen auf einer Webseite verwenden.

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

Das in einem Browser angezeigte Ergebnis:

Razor-Img9

Konvertieren und Testen von Datentypen

Obwohl ASP.NET einen Datentyp in der Regel automatisch bestimmen können, kann dies manchmal nicht sein. Daher müssen Sie möglicherweise bei der ASP.NET helfen, indem Sie eine explizite Konvertierung durchführen. Auch wenn Sie keine Typen konvertieren müssen, ist es manchmal hilfreich, zu testen, mit welchen Datentypen Sie möglicherweise arbeiten.

Der häufigste Fall ist, dass Sie eine Zeichenfolge in einen anderen Typ konvertieren müssen, z. B. in eine ganze Zahl oder ein Datum. Das folgende Beispiel zeigt einen typischen Fall, in dem Sie eine Zeichenfolge in eine Zahl konvertieren müssen.

@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

In der Regel werden Benutzereingaben als Zeichenfolgen angezeigt. Selbst wenn Sie den Benutzer aufgefordert haben, eine Zahl einzugeben, und selbst wenn er eine Ziffer eingegeben hat, wenn die Benutzereingabe übermittelt wird und Sie sie im Code lesen, haben die Daten das Zeichenfolgenformat. Daher müssen Sie die Zeichenfolge in eine Zahl konvertieren. Wenn Sie im Beispiel versuchen, Arithmetik für die Werte auszuführen, ohne sie zu konvertieren, ergibt sich der folgende Fehler, da ASP.NET keine zwei Zeichenfolgen hinzufügen können:

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

Um die Werte in ganze Zahlen zu konvertieren, rufen Sie die -Methode auf AsInt . Wenn die Konvertierung erfolgreich ist, können Sie die Zahlen hinzufügen.

In der folgenden Tabelle sind einige gängige Konvertierungs- und Testmethoden für Variablen aufgeführt.

Methode

Beschreibung

Beispiel


AsInt(), IsInt()

Konvertiert eine Zeichenfolge, die eine ganze Zahl (z. B. "593") darstellt, in eine ganze Zahl.

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

AsBool(), IsBool()

Konvertiert eine Zeichenfolge wie "true" oder "false" in einen booleschen Typ.

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

AsFloat(), IsFloat()

Konvertiert eine Zeichenfolge mit einem Dezimalwert wie "1,3" oder "7,439" in eine Gleitkommazahl.

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

AsDecimal(), IsDecimal()

Konvertiert eine Zeichenfolge mit einem Dezimalwert wie "1,3" oder "7,439" in eine Dezimalzahl. (In ASP.NET ist eine Dezimalzahl genauer als eine Gleitkommazahl.)

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

AsDateTime(), IsDateTime()

Konvertiert eine Zeichenfolge, die einen Datums- und Uhrzeitwert darstellt, in den typ ASP.NET DateTime .

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

ToString()

Konvertiert jeden anderen Datentyp in eine Zeichenfolge.

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

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

Operatoren

Ein Operator ist ein Schlüsselwort (keyword) oder Zeichen, das ASP.NET angibt, welche Art von Befehl in einem Ausdruck ausgeführt werden soll. Visual Basic unterstützt viele Operatoren, aber Sie müssen nur einige erkennen, um mit der Entwicklung ASP.NET Webseiten zu beginnen. In der folgenden Tabelle sind die gängigsten Operatoren zusammengefasst.

Operator

Beschreibung

Beispiele


+ - * /

Mathematische Operatoren, die in numerischen Ausdrücken verwendet werden.

@(5 + 13)

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

=

Zuweisung und Gleichheit. Je nach Kontext weist entweder den Wert auf der rechten Seite einer Anweisung dem -Objekt auf der linken Seite zu, oder überprüft die Werte auf Gleichheit.

Dim age = 17

Dim income = Request("AnnualIncome")

<>

Ungleichheit. Gibt zurück True , wenn die Werte ungleich sind.

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

< > <= >=

Kleiner als, größer als, kleiner oder gleich und größer als oder gleich.

If 2 < 3 Then
    ' Do something.
End If

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

&

Verkettung, die verwendet wird, um Zeichenfolgen zu verbinden.

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

+= -=

Die Inkrement- und Dekrementoperatoren, die 1 (bzw.) von einer Variablen hinzufügen und subtrahieren.

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

.

Punkt. Wird verwendet, um Objekte und ihre Eigenschaften und Methoden zu unterscheiden.

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

()

Klammern: Wird zum Gruppieren von Ausdrücken, zum Übergeben von Parametern an Methoden und zum Zugreifen auf Elemente von Arrays und Auflistungen verwendet.

@(3 + 7)

@Request.MapPath(Request.FilePath)

Not

Nicht. Kehrt einen true-Wert in false um und umgekehrt. Wird in der Regel als Kurzform zum Testen für False verwendet (d. a. für nicht True).

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

AndAlso OrElse

Logisches AND und OR, die verwendet werden, um Bedingungen miteinander zu verknüpfen.

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

Arbeiten mit Datei- und Ordnerpfaden im Code

Sie arbeiten häufig mit Datei- und Ordnerpfaden in Ihrem Code. Im Folgenden finden Sie ein Beispiel für die Physische Ordnerstruktur für eine Website, wie sie auf Ihrem Entwicklungscomputer angezeigt werden kann:

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

Hier sind einige wichtige Details zu URLs und Pfaden:

  • Eine URL beginnt entweder mit einem Domänennamen (http://www.example.com) oder einem Servernamen (http://localhost, http://mycomputer).
  • Eine URL entspricht einem physischen Pfad auf einem Hostcomputer. Kann z. B http://myserver . dem Ordner C:\websites\mywebsite auf dem Server entsprechen.
  • Ein virtueller Pfad ist eine Kurzform, um Pfade im Code darzustellen, ohne den vollständigen Pfad angeben zu müssen. Sie enthält den Teil einer URL, der dem Domänen- oder Servernamen folgt. Wenn Sie virtuelle Pfade verwenden, können Sie Ihren Code in eine andere Domäne oder einen anderen Server verschieben, ohne die Pfade aktualisieren zu müssen.

Im Folgenden finden Sie ein Beispiel, das Ihnen hilft, die Unterschiede zu verstehen:

Vollständige URL http://mycompanyserver/humanresources/CompanyPolicy.htm
Servername mycompanyserver
Virtueller Pfad /humanresources/CompanyPolicy.htm
Physischer Pfad C:\mywebsites\humanresources\CompanyPolicy.htm

Der virtuelle Stamm ist /, genau wie der Stamm Ihres Laufwerks C: ist . (Virtuelle Ordnerpfade verwenden immer Schrägstriche.) Der virtuelle Pfad eines Ordners muss nicht den gleichen Namen wie der physische Ordner haben. Dabei kann es sich um einen Alias handelt. (Auf Produktionsservern stimmt der virtuelle Pfad selten mit einem exakten physischen Pfad überein.)

Wenn Sie mit Dateien und Ordnern im Code arbeiten, müssen Sie manchmal auf den physischen Pfad und manchmal auf einen virtuellen Pfad verweisen, je nachdem, mit welchen Objekten Sie arbeiten. ASP.NET bietet Ihnen die folgenden Tools für die Arbeit mit Datei- und Ordnerpfaden im Code: die Server.MapPath -Methode sowie den Operator und Href die ~ Methode.

Konvertieren virtueller in physische Pfade: die Server.MapPath-Methode

Die Server.MapPath -Methode konvertiert einen virtuellen Pfad (z . B. /default.cshtml) in einen absoluten physischen Pfad (z. B. C:\WebSites\MyWebSiteFolder\default.cshtml). Sie verwenden diese Methode jedes Mal, wenn Sie einen vollständigen physischen Pfad benötigen. Ein typisches Beispiel ist, wenn Sie eine Textdatei oder Bilddatei auf dem Webserver lesen oder schreiben.

Sie kennen in der Regel nicht den absoluten physischen Pfad Ihrer Website auf dem Server einer Hostingwebsite, sodass diese Methode den ihnen bekannt ist – den virtuellen Pfad – in den entsprechenden Pfad auf dem Server für Sie konvertieren kann. Sie übergeben den virtuellen Pfad an eine Datei oder einen Ordner an die -Methode, und sie gibt den physischen Pfad zurück:

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

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

Verweisen auf den virtuellen Stamm: der ~-Operator und die Href-Methode

In einer CSHTML- oder VBHTML-Datei können Sie mithilfe des Operators auf den ~ virtuellen Stammpfad verweisen. Dies ist sehr praktisch, da Sie Seiten auf einer Website verschieben können, und alle Links, die sie zu anderen Seiten enthalten, werden nicht beschädigt. Es ist auch praktisch, wenn Sie Ihre Website jemals an einen anderen Ort verschieben. Im Folgenden finden Sie einige Beispiele:

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

Wenn die Website ist http://myserver/myapp, wird beschrieben, wie ASP.NET diese Pfade behandeln, wenn die Seite ausgeführt wird:

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

(Diese Pfade werden nicht als Werte der Variablen angezeigt, aber ASP.NET behandelt die Pfade so, als ob sie das wären.)

Sie können den ~ Operator wie folgt sowohl im Servercode (wie oben) als auch im Markup verwenden:

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

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

Im Markup verwenden Sie den ~ Operator, um Pfade zu Ressourcen wie Bilddateien, anderen Webseiten und CSS-Dateien zu erstellen. Wenn die Seite ausgeführt wird, durchläuft ASP.NET die Seite (sowohl Code als auch Markup) und löst alle ~ Verweise auf den entsprechenden Pfad auf.

Bedingte Logik und Schleifen

ASP.NET Servercode können Sie Aufgaben basierend auf Bedingungen ausführen und Code schreiben, der Anweisungen eine bestimmte Anzahl von Wiederholungen wiederholt. Code, der eine Schleife ausführt.

Testbedingungen

Um eine einfache Bedingung zu testen, verwenden Sie die If...Then -Anweisung, die oder False basierend auf einem von Ihnen angegebenen Test zurückgibtTrue:

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

Die If Schlüsselwort (keyword) startet einen Block. Der tatsächliche Test (Bedingung) folgt dem If Schlüsselwort (keyword) und gibt true oder false zurück. Die If -Anweisung endet mit Then. Die Anweisungen, die ausgeführt werden, wenn der Test true ist, werden von If und End Ifeingeschlossen. Eine If -Anweisung kann einen Else -Block enthalten, der Anweisungen angibt, die ausgeführt werden sollen, wenn die Bedingung false ist:

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

Wenn eine If Anweisung einen Codeblock startet, müssen Sie die normalen Code...End Code Anweisungen nicht verwenden, um die Blöcke einzuschließen. Sie können dem Block einfach hinzufügen @ , und es funktioniert. Dieser Ansatz funktioniert sowohl mit If als auch mit anderen Visual Basic-Programmierschlüsselwörtern, denen Codeblöcke folgen, z. B For. , For Each, Do Whileusw.

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

Sie können mehrere Bedingungen mithilfe eines oder ElseIf mehrerer Blöcke hinzufügen:

@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

Wenn in diesem Beispiel die erste Bedingung im If Block nicht true ist, wird die ElseIf Bedingung überprüft. Wenn diese Bedingung erfüllt ist, werden die Anweisungen im ElseIf Block ausgeführt. Wenn keine der Bedingungen erfüllt ist, werden die Anweisungen im Else Block ausgeführt. Sie können eine beliebige Anzahl von ElseIf Blöcken hinzufügen und dann mit einem Else Block als Bedingung "alles andere" schließen.

Verwenden Sie einen Select Case -Block, um eine große Anzahl von Bedingungen zu testen:

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

Der zu testde Wert befindet sich in Klammern (im Beispiel die Wochentagsvariable). Jeder einzelne Test verwendet eine Case -Anweisung, die einen Wert auflistet. Wenn der Wert einer Case Anweisung mit dem Testwert übereinstimmt, wird der Code in diesem Case Block ausgeführt.

Das Ergebnis der letzten beiden bedingten Blöcke, die in einem Browser angezeigt werden:

Razor-Img10

Codeschleifen

Häufig müssen dieselben Anweisungen wiederholt ausgeführt werden. Dazu führen Sie eine Schleife aus. Beispielsweise führen Sie häufig dieselben Anweisungen für jedes Element in einer Sammlung von Daten aus. Wenn Sie genau wissen, wie oft Sie eine Schleife ausführen möchten, können Sie eine For Schleife verwenden. Diese Art von Schleife ist besonders nützlich für das Auf- oder Herunterzählen:

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

Die Schleife beginnt mit dem For Schlüsselwort (keyword), gefolgt von drei Elementen:

  • Unmittelbar nach der For -Anweisung deklarieren Sie eine Zählervariable (Sie müssen nicht verwenden Dim) und geben dann den Bereich an, wie in i = 10 to 20. Dies bedeutet, dass die Variable i bei 10 beginnt und fortgesetzt wird, bis sie 20 (einschließlich) erreicht.
  • Zwischen den For - und Next -Anweisungen befindet sich der Inhalt des Blocks. Dies kann eine oder mehrere Codeanweisungen enthalten, die mit jeder Schleife ausgeführt werden.
  • Die Next i -Anweisung beendet die Schleife. Er erhöht den Indikator und startet die nächste Iteration der Schleife.

Die Codezeile zwischen den For Zeilen und Next enthält den Code, der für jede Iteration der Schleife ausgeführt wird. Das Markup erstellt jedes Mal einen neuen Absatz (<p> Element) und fügt der Ausgabe eine Zeile hinzu, die den Wert von i (den Indikator) anzeigt. Wenn Sie diese Seite ausführen, werden im Beispiel 11 Zeilen erstellt, in denen die Ausgabe angezeigt wird, wobei der Text in jeder Zeile die Elementnummer angibt.

Razor-Img11

Wenn Sie mit einer Sammlung oder einem Array arbeiten, verwenden Sie häufig eine For Each Schleife. Eine Auflistung ist eine Gruppe ähnlicher Objekte, und mit der For Each Schleife können Sie eine Aufgabe für jedes Element in der Auflistung ausführen. Diese Art von Schleife ist für Sammlungen geeignet, da Sie im Gegensatz zu einer For Schleife den Zähler nicht erhöhen oder ein Limit festlegen müssen. Stattdessen wird der For Each Schleifencode einfach durch die Auflistung fortgesetzt, bis er fertig ist.

In diesem Beispiel werden die Elemente in der Request.ServerVariables Auflistung (die Informationen zu Ihrem Webserver enthält) zurückgegeben. Es verwendet eine For Each Schleife, um den Namen jedes Elements anzuzeigen, indem ein neues <li> Element in einer HTML-Aufzählung erstellt wird.

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

Auf die For Each Schlüsselwort (keyword) folgt eine Variable, die ein einzelnes Element in der Auflistung darstellt (im Beispiel), myItemgefolgt von der In Schlüsselwort (keyword), gefolgt von der Auflistung, die Sie durchlaufen möchten. Im Textkörper der For Each Schleife können Sie mithilfe der zuvor deklarierten Variablen auf das aktuelle Element zugreifen.

Razor-Img12

Verwenden Sie die Do While -Anweisung, um eine allgemeinere Schleife zu erstellen:

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

Diese Schleife beginnt mit dem Do While Schlüsselwort (keyword), gefolgt von einer Bedingung und dem zu wiederholenden Block. Schleifen in der Regel inkrementieren (hinzufügen zu) oder dekrementieren (subtrahieren von) eine Variable oder ein Objekt, die zum Zählen verwendet wird. Im Beispiel fügt der += Operator dem Wert einer Variablen bei jeder Ausführung der Schleife 1 hinzu. (Um eine Variable in einer Schleife zu dekrementieren, die nach unten zählt, würden Sie den Dekrementoperator -=verwenden.)

Objekte und Auflistungen

Fast alles in einer ASP.NET Website ist ein Objekt, einschließlich der Webseite selbst. In diesem Abschnitt werden einige wichtige Objekte erläutert, mit denen Sie häufig in Ihrem Code arbeiten werden.

Page-Objekte

Das grundlegendste Objekt in ASP.NET ist die Seite. Sie können direkt ohne qualifizierendes Objekt auf Eigenschaften des Seitenobjekts zugreifen. Der folgende Code ruft den Dateipfad der Seite mithilfe des Request -Objekts der Seite ab:

@Code
    Dim path = Request.FilePath
End Code

Sie können Eigenschaften des Page -Objekts verwenden, um viele Informationen abzurufen, z. B.:

  • Request. Wie Sie bereits gesehen haben, ist dies eine Sammlung von Informationen über die aktuelle Anforderung, einschließlich des Typs des Browsers, der die Anforderung gestellt hat, der URL der Seite, der Benutzeridentität usw.

  • Response. Dies ist eine Sammlung von Informationen über die Antwort (Seite), die an den Browser gesendet wird, wenn die Ausführung des Servercodes beendet ist. Beispielsweise können Sie diese Eigenschaft verwenden, um Informationen in die Antwort zu schreiben.

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

Sammlungsobjekte (Arrays und Wörterbücher)

Eine Auflistung ist eine Gruppe von Objekten desselben Typs, z. B. eine Auflistung von Customer Objekten aus einer Datenbank. ASP.NET enthält viele integrierte Sammlungen, z. B. die Request.Files Auflistung.

Sie arbeiten häufig mit Daten in Sammlungen. Zwei gängige Auflistungstypen sind das Array und das Wörterbuch. Ein Array ist nützlich, wenn Sie eine Sammlung ähnlicher Elemente speichern möchten, aber keine separate Variable erstellen möchten, die jedes Element enthält:

<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

Mit Arrays deklarieren Sie einen bestimmten Datentyp, z String. B. , Integeroder DateTime. Um anzugeben, dass die Variable ein Array enthalten kann, fügen Sie dem Variablennamen in der Deklaration Klammern hinzu (z Dim myVar() As String. B. ). Sie können auf Elemente in einem Array mithilfe ihrer Position (Index) oder mithilfe der For Each -Anweisung zugreifen. Arrayindizes sind nullbasiert, d. h. das erste Element befindet sich an Position 0, das zweite Element an Position 1 usw.

@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

Sie können die Anzahl der Elemente in einem Array ermitteln, indem Sie dessen Length -Eigenschaft abrufen. Verwenden Array.IndexOf Sie die -Methode, um die Position eines bestimmten Elements im Array abzurufen (d. h. zum Durchsuchen des Arrays). Sie können auch Dinge tun, wie den Inhalt eines Arrays (die Array.Reverse -Methode) umzukehren oder den Inhalt (die Array.Sort -Methode) zu sortieren.

Die Ausgabe des in einem Browser angezeigten Zeichenfolgenarraycodes:

Razor-Img13

Ein Wörterbuch ist eine Sammlung von Schlüssel-Wert-Paaren, bei denen Sie den Schlüssel (oder Namen) angeben, um den entsprechenden Wert festzulegen oder abzurufen:

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

Um ein Wörterbuch zu erstellen, verwenden Sie die New Schlüsselwort (keyword), um anzugeben, dass Sie ein neues Dictionary Objekt erstellen. Sie können einer Variablen mithilfe der Dim Schlüsselwort (keyword) ein Wörterbuch zuweisen. Sie geben die Datentypen der Elemente im Wörterbuch mithilfe von Klammern ( ( ) ) an. Am Ende der Deklaration müssen Sie ein weiteres Paar von Klammern hinzufügen, da dies eigentlich eine Methode ist, die ein neues Wörterbuch erstellt.

Um dem Wörterbuch Elemente hinzuzufügen, können Sie die Add -Methode der Wörterbuchvariable (myScores in diesem Fall) aufrufen und dann einen Schlüssel und einen Wert angeben. Alternativ können Sie Klammern verwenden, um den Schlüssel anzugeben und eine einfache Zuweisung auszuführen, wie im folgenden Beispiel gezeigt:

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

Um einen Wert aus dem Wörterbuch abzurufen, geben Sie den Schlüssel in Klammern an:

@myScores("test4")

Aufrufen von Methoden mit Parametern

Wie Sie weiter oben in diesem Artikel gesehen haben, verfügen die Objekte, mit denen Sie programmieren, über Methoden. Ein Objekt kann beispielsweise Database über eine Database.Connect -Methode verfügen. Viele Methoden verfügen auch über einen oder mehrere Parameter. Ein Parameter ist ein Wert, den Sie an eine Methode übergeben, damit die Methode ihre Aufgabe abschließen kann. Sehen Sie sich beispielsweise eine Deklaration für die Request.MapPath -Methode an, die drei Parameter akzeptiert:

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

Diese Methode gibt den physischen Pfad auf dem Server zurück, der einem angegebenen virtuellen Pfad entspricht. Die drei Parameter für die -Methode sind virtualPath, baseVirtualDirund allowCrossAppMapping. (Beachten Sie, dass die Parameter in der Deklaration mit den Datentypen der Daten aufgeführt sind, die sie akzeptieren.) Wenn Sie diese Methode aufrufen, müssen Sie Werte für alle drei Parameter angeben.

Wenn Sie Visual Basic mit der Razor-Syntax verwenden, haben Sie zwei Optionen zum Übergeben von Parametern an eine Methode: Positionsparameter oder benannte Parameter. Um eine Methode mithilfe von Positionsparametern aufzurufen, übergeben Sie die Parameter in einer strengen Reihenfolge, die in der Methodendeklaration angegeben ist. (In der Regel kennen Sie diese Reihenfolge, indem Sie die Dokumentation für die -Methode lesen.) Sie müssen der Reihenfolge folgen, und Sie können keinen der Parameter überspringen. Bei Bedarf übergeben Sie eine leere Zeichenfolge ("") oder NULL für einen Positionsparameter, für den Sie keinen Wert haben.

Im folgenden Beispiel wird davon ausgegangen, dass Sie auf Ihrer Website über einen Ordner namens scripts verfügen. Der Code ruft die Request.MapPath -Methode auf und übergibt Werte für die drei Parameter in der richtigen Reihenfolge. Anschließend wird der resultierende zugeordnete Pfad angezeigt.

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

Wenn viele Parameter für eine Methode vorhanden sind, können Sie Ihren Code übersichtlicher und besser lesbar halten, indem Sie benannte Parameter verwenden. Um eine Methode mit benannten Parametern aufzurufen, geben Sie den Parameternamen gefolgt von := an, und geben Sie dann den Wert an. Ein Vorteil von benannten Parametern besteht darin, dass Sie sie in beliebiger Reihenfolge hinzufügen können. (Ein Nachteil ist, dass der Methodenaufruf nicht so kompakt ist.)

Im folgenden Beispiel wird dieselbe Methode wie oben aufgerufen, es werden jedoch benannte Parameter verwendet, um die Werte anzugeben:

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

Wie Sie sehen können, werden die Parameter in einer anderen Reihenfolge übergeben. Wenn Sie jedoch das vorherige Beispiel und dieses Beispiel ausführen, geben sie den gleichen Wert zurück.

Behandeln von Fehlern

Try-Catch-Anweisungen

Sie haben häufig Anweisungen im Code, die aus Gründen außerhalb Ihrer Kontrolle fehlschlagen können. Zum Beispiel:

  • Wenn Ihr Code versucht, eine Datei zu öffnen, zu erstellen, zu lesen oder zu schreiben, können alle Arten von Fehlern auftreten. Die gewünschte Datei ist möglicherweise nicht vorhanden, sie ist möglicherweise gesperrt, der Code verfügt möglicherweise über keine Berechtigungen usw.
  • Wenn Ihr Code versucht, Datensätze in einer Datenbank zu aktualisieren, kann es zu Berechtigungsproblemen kommen, die Verbindung mit der Datenbank kann unterbrochen werden, die zu speichernden Daten können ungültig sein usw.

In der Programmierung werden diese Situationen als Ausnahmen bezeichnet. Wenn in Ihrem Code eine Ausnahme auftritt, wird eine Fehlermeldung generiert (ausgelöst), die für Benutzer bestenfalls störend ist.

Razor-Img14

In Situationen, in denen Ihr Code möglicherweise auf Ausnahmen stößt, und um Fehlermeldungen dieses Typs zu vermeiden, können Sie -Anweisungen verwenden Try/Catch . In der Try -Anweisung führen Sie den Code aus, den Sie überprüfen. In einer oder mehreren Catch Anweisungen können Sie nach bestimmten Fehlern (bestimmte Arten von Ausnahmen) suchen, die möglicherweise aufgetreten sind. Sie können so viele Catch Anweisungen einschließen, wie Sie benötigen, um nach Fehlern zu suchen, die Sie erwarten.

Hinweis

Es wird empfohlen, die Verwendung der Response.Redirect -Methode in Try/Catch -Anweisungen zu vermeiden, da dies eine Ausnahme auf Ihrer Seite verursachen kann.

Das folgende Beispiel zeigt eine Seite, die eine Textdatei für die erste Anforderung erstellt und dann eine Schaltfläche anzeigt, mit der der Benutzer die Datei öffnen kann. Im Beispiel wird absichtlich ein ungültiger Dateiname verwendet, sodass eine Ausnahme ausgelöst wird. Der Code enthält Catch Anweisungen für zwei mögliche Ausnahmen: FileNotFoundException, die auftreten, wenn der Dateiname ungültig ist, und DirectoryNotFoundException, was auftritt, wenn ASP.NET den Ordner nicht einmal finden kann. (Sie können die Auskommentierung einer Anweisung im Beispiel aufheben, um zu sehen, wie sie ausgeführt wird, wenn alles ordnungsgemäß funktioniert.)

Wenn Ihr Code die Ausnahme nicht behandelt hat, wird eine Fehlerseite wie im vorherigen Screenshot angezeigt. Der Abschnitt hilft jedoch, zu verhindern, Try/Catch dass der Benutzer diese Fehlertypen sieht.

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

Zusätzliche Ressourcen

Referenzdokumentation