Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
von Tom FitzMacken
In diesem Artikel finden Sie eine Übersicht über die Programmierung mit ASP.NET Webseiten mithilfe der Razor-Syntax und Visual Basic. ASP.NET ist die Technologie von Microsoft zum Ausführen dynamischer Webseiten auf Webservern.
Was Sie lernen:
- Die 8 wichtigsten Programmiertipps für die ersten Schritte mit der Programmierung ASP.NET Webseiten mithilfe der Razor-Syntax.
- Grundlegende Programmierkonzepte, die Sie benötigen.
- Worum es bei ASP.NET-Servercode und der Razor-Syntax geht.
Softwareversionen
- ASP.NET Webseiten (Razor) 3
Dieses Lernprogramm funktioniert auch mit ASP.NET Webseiten 2.
Die meisten Beispiele für die Verwendung von ASP.NET Webseiten mit Razor-Syntax verwenden C#. Die Razor-Syntax unterstützt jedoch auch Visual Basic. Um eine ASP.NET Webseite in Visual Basic zu programmieren, erstellen Sie eine Webseite mit der Dateinamenerweiterung .vbhtml , und fügen Sie 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 mit dem Namen 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 mithilfe der Razor-Syntax beginnen.
1. Sie fügen code zu einer Seite mithilfe des @-Zeichens hinzu.
Das @ Zeichen beginnt Inline-Ausdrücke, einzelne Anweisungsblöcke und mehrfache Anweisungsblöcke.
<!-- 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 Ergebnis, das in einem Browser angezeigt wird:
Tipp
HTML-Codierung
Wenn Sie Inhalte auf einer Seite mit dem Zeichen @ anzeigen, wie in den vorherigen Beispielen, kodiert ASP.NET die Ausgabe in HTML. 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 von Ihrem Servercode möglicherweise nicht ordnungsgemäß angezeigt und kann eine Seite sicherheitsrisiken offenlegen.
Wenn Ihr Ziel darin besteht, HTML-Markup auszugeben, das Tags als Markup rendert (z. B.
Weitere Informationen zur HTML-Codierung beim Arbeiten mit HTML-Formularen in ASP.NET Webseitenwebsites finden Sie hier.
2. Sie schließen Codeblöcke mit Code...End Code ein
Ein Code-Block enthält eine oder mehrere Codeanweisungen und ist mit den Schlüsselwörtern Code und End Code eingeschlossen. Platzieren Sie das öffnende Code Schlüsselwort unmittelbar hinter dem @ Zeichen . Es kann kein Leerzeichen dazwischen vorhanden sein.
<!-- 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 Ergebnis, das in einem Browser angezeigt wird:
3. Innerhalb eines Blocks beenden Sie jede Code-Anweisung mit einem Zeilenumbruch.
In einem Visual Basic-Codeblock endet jede Anweisung mit einem Zeilenumbruch. (Später 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. Sie können Variablenwerte direkt auf einer Seite mit @ einfügen.
<!-- 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 Ergebnis, das in einem Browser angezeigt wird:
5. Sie setzen literale Zeichenfolgen in doppelte Anführungszeichen.
Eine Zeichenfolge ist eine Abfolge 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
Wenn Sie doppelte Anführungszeichen in einen Zeichenfolgenwert einbetten möchten, 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 anführungszeichen Zeichenfolge ein, und wenn es zweimal angezeigt werden soll, geben Sie es wie """" in der anführungszeichen Zeichenfolge ein.
<!-- Embedding double quotation marks in a string -->
@Code
Dim myQuote = "The person said: ""Hello, today is Monday."""
End Code
<p>@myQuote</p>
Das Ergebnis, das in einem Browser angezeigt wird:
6. Visual Basic-Code berücksichtigt nicht die Groß-/Kleinschreibung.
Die Sprache Visual Basic ist nicht case sensitive. Programmierstichwörter (z Dim. B. , Ifund True) und Variablennamen (z myString. B. oder subTotal) können in jedem Fall geschrieben werden.
In den folgenden Codezeilen wird der Variablen lastname mit einem Kleinbuchstaben ein Wert zugewiesen, und anschließend wird der Variablenwert mithilfe eines Großbuchstabennamens auf die Seite ausgegeben.
@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 Ergebnis, das in einem Browser angezeigt wird:
7. Ein Großteil Ihrer Codierung umfasst das Arbeiten mit Objekten.
Ein Objekt stellt eine Sache dar, mit der Sie programmieren können – eine Seite, ein Textfeld, eine Datei, ein Bild, eine Webanfrage, eine E-Mail-Nachricht, einen Kundendatensatz (Datenbankzeile) usw. Objekte verfügen über Eigenschaften, die ihre Merkmale 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 verfügt über eine FirstName Eigenschaft. Objekte verfügen auch über Methoden, die "Verben" sind, die sie ausführen können. Beispiele 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 zusammen, das Ihnen Informationen wie die Werte von Formularfeldern auf der Seite (Textfelder usw.) gibt, welche Art von Browser die Anforderung vorgenommen hat, die URL der Seite, die Benutzeridentität usw. In diesem Beispiel wird gezeigt, wie Sie auf Eigenschaften des Request Objekts zugreifen und wie sie die MapPath Methode des Request Objekts aufrufen, wodurch Sie den absoluten Pfad der Seite auf dem Server erhalten:
<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 Ergebnis, das in einem Browser angezeigt wird:
8. Sie können Code schreiben, der Entscheidungen trifft
Ein wichtiges Feature dynamischer Webseiten besteht darin, dass Sie anhand von Bedingungen bestimmen können, was zu tun ist. Die häufigste Methode hierfür ist die If Anweisung (und optionale Else 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 verkürzte Schreibweise von If IsPost = True. Zusammen mit If Anweisungen gibt es eine Vielzahl von Möglichkeiten zum Testen von Bedingungen, Wiederholungsblöcken von Code usw., die weiter unten in diesem Artikel beschrieben werden.
Das Ergebnis, das in einem Browser angezeigt wird (nach dem Klicken auf 'Absenden'):
Tipp
HTTP GET- und POST-Methoden und die IsPost-Eigenschaft
Das für Webseiten (HTTP) verwendete Protokoll unterstützt eine sehr begrenzte Anzahl von Methoden ("Verben"), die zum Senden von Anforderungen an den Server verwendet werden. Die beiden am häufigsten verwendeten GET-Elemente sind GET, die zum Lesen einer Seite und POST verwendet wird, die zum Senden einer Seite verwendet wird. Im Allgemeinen wird die Seite beim ersten Anfordern einer Seite mithilfe von GET angefordert. Wenn der Benutzer ein Formular eingibt und dann auf "Absenden" klickt, sendet der Browser eine POST-Anforderung an den Server.
Bei der Webprogrammierung ist es häufig hilfreich zu wissen, ob eine Seite als GET oder als POST angefordert wird, damit Sie wissen, wie sie die Seite verarbeiten. In ASP.NET Webseiten können Sie mithilfe der IsPost Eigenschaft sehen, ob es sich bei einer Anforderung um ein GET- oder post-Objekt handelt. Wenn es sich bei der Anforderung um einen POST handelt, gibt die IsPost Eigenschaft "true" zurück, und Sie können z. B. die Werte von Textfeldern in einem Formular lesen. In vielen Beispielen wird gezeigt, wie Sie die Seite je nach Wert 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. Anschließend werden sie hinzugefügt und das Ergebnis angezeigt.
Erstellen Sie in Ihrem Editor eine neue Datei, und nennen Sie sie "AddNumbers.vbhtml".
Kopieren Sie den folgenden Code und Markup in die Seite, und ersetzen Sie alles, was bereits auf der Seite enthalten ist.
@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>Hier sind einige Punkte, die Sie beachten müssen:
- Das
@Zeichen beginnt den ersten Codeblock auf der Seite und steht vor dertotalMessageVariablen, die nahe dem unteren Bereich eingebettet ist. - Der Block oben auf der Seite wird in
Code...End Codeeingeschlossen. - Die Variablen
total,num1, ,num2undtotalMessagespeichern mehrere Zahlen und eine Zeichenfolge. - Der literale Zeichenfolgenwert, der der
totalMessageVariablen zugewiesen ist, befindet sich in doppelten Anführungszeichen. - Da visual Basic-Code die Groß-/Kleinschreibung nicht beachtet, muss der Name nur mit der Schreibweise der Variablendeklaration oben auf der Seite übereinstimmen, wenn die
totalMessageVariable am unteren Rand der Seite verwendet wird. Die Groß-/Kleinschreibung spielt keine Rolle. - Der Ausdruck
num1.AsInt()+num2.AsInt()zeigt, wie Sie mit Objekten und Methoden arbeiten. DieAsIntMethode 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 einmethod="post"Attribut. Dadurch wird angegeben, 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 CodeIf IsPostals "true" ausgewertet und der bedingte Code ausgeführt und zeigt das Ergebnis des Hinzufügens der Zahlen an.
- Das
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 ".
Visual Basic-Sprache und -Syntax
Weiter oben haben Sie ein grundlegendes Beispiel zum Erstellen einer ASP.NET Webseite und zum 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 Programmiersprachenregeln.
Wenn Sie mit der Programmierung vertraut sind (insbesondere, wenn Sie C, C++, C#, Visual Basic oder JavaScript verwendet haben), sind Viele der hier gelesenen Informationen vertraut. Sie müssen sich wahrscheinlich nur mit dem Hinzufügen von WebMatrix-Code zum Markup in VBHTML-Dateien vertraut machen.
Kombinieren von Text, Markup und Code in Codeblöcken
In Servercodeblöcken möchten Sie häufig Text und Markup auf die Seite ausgeben. Wenn ein Servercodeblock Text enthält, der kein Code ist und so gerendert werden soll, muss ASP.NET diesen Text von tatsächlichem Code unterscheiden können. Hierfür gibt es mehrere Möglichkeiten.
Setzen Sie den Text in ein HTML-Blockelement wie
<p></p>oder<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 IfDas HTML-Element kann Text, zusätzliche HTML-Elemente und Servercodeausdrücke enthalten. Wenn ASP.NET das öffnende HTML-Tag (z. B.
<p>) sieht, rendert es das gesamte Element und dessen Inhalt unverändert im Browser und löst dabei die Servercodeausdrücke auf.Verwenden Sie den
@:Operator oder das<text>Element. Der@:gibt eine einzelne Zeile mit Inhalt aus, die Nur-Text oder nicht übereinstimmende HTML-Tags enthält; das<text>Element umfasst 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 IfIm folgenden Beispiel wird das vorherige Beispiel wiederholt, es wird jedoch ein einzelnes Tagpaar
<text>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 IfIm folgenden Beispiel umschließen die
<text>-Tags und</text>-Tags drei Zeilen, die alle etwas nicht eingeschlossenen Text und nicht übereinstimmende HTML-Tags (<br />) sowie Servercode und übereinstimmende HTML-Tags enthalten. Sie könnten auch jeder Zeile den@:Operator voranstellen; beide Möglichkeiten funktionieren.@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 CodeHinweis
Wenn Sie Text ausgeben, wie in diesem Abschnitt gezeigt – mit einem HTML-Element, dem
@:Operator oder dem<text>Element – ASP.NET die Ausgabe nicht htmlcodiert. (Wie bereits erwähnt, codiert ASP.NET die Ausgabe von Servercodeausdrücken und Servercodeblöcken, die von@vorangestellt sind, mit Ausnahme der in diesem Abschnitt aufgeführten Sonderfälle.)
Leerzeichen
Zusätzliche Leerzeichen in einer Anweisung (und außerhalb eines Zeichenfolgenliterals) beeinträchtigen die Anweisung nicht:
@Code Dim personName = "Smith" End Code
Aufteilen langer Anweisungen in mehrere Zeilen
Sie können eine lange Code-Anweisung in mehrere Zeilen unterTeilen, indem Sie nach jeder Codezeile das Unterstrichzeichen (in Visual Basic als _ bezeichnet) verwenden. Wenn Sie eine Anweisung in die nächste Zeile umbrechen möchten, fügen Sie am Ende der Zeile ein Leerzeichen und dann das Fortsetzungszeichen hinzu. Setzen Sie die Aussage in der nächsten Zeile fort. Sie können Anweisungen auf so viele Zeilen verteilen, wie es für die Lesbarkeit erforderlich ist. Die folgenden Aussagen sind identisch:
@Code
Dim familyName _
= "Smith"
End Code
@Code
Dim _
theName _
= _
"Smith"
End Code
Jedoch können Sie eine Zeile nicht in der Mitte eines Zeichenfolgenliterals umbrechen. 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 in mehrere Zeilen wie den obigen Code umgebrochen wird, müssen Sie den Verkettungsoperator (&), den Sie weiter unten in diesem Artikel sehen, verwenden.
Codekommentare
Mit Kommentaren können Sie Notizen für sich selbst oder andere Personen hinterlassen. Razor-Syntaxkommentare werden mit @* präfixiert 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 normales Visual Basic-Kommentarzeichen verwenden, bei dem es sich um ein einfaches 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, wie Sie bereits gesehen haben, spielt die Groß-/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 haben, die Zeichenfolgenwerte (z. B. "Hello world"), ganzzahlige Variablen speichern, die ganze Zahlenwerte (z. B. 3 oder 79) speichern, und Datumsvariablen, die Datumswerte in einer Vielzahl von Formaten speichern (z. B. 04.12.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 kann ASP.NET den Typ ermitteln, indem es untersucht, wie die Daten in der Variablen verwendet werden. (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 (z. B. Dim myVar). Um eine Variable mit einem Typ zu deklarieren, verwenden Sie Dim plus den Variablennamen, gefolgt von As und dann den Typnamen (z. B 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 Ergebnis, das in einem Browser angezeigt wird:
Konvertieren und Testen von Datentypen
Obwohl ASP.NET in der Regel automatisch einen Datentyp bestimmen kann, kann er manchmal nicht. Daher müssen Sie möglicherweise ASP.NET helfen, indem Sie eine explizite Konvertierung ausführen. Auch wenn Sie keine Typen konvertieren müssen, ist es manchmal hilfreich, zu testen, mit welcher Art von Daten 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 kommt die Benutzereingabe als Zeichenfolgen zu Ihnen. Auch wenn Sie den Benutzer aufgefordert haben, eine Zahl einzugeben, und selbst wenn er eine Ziffer eingegeben hat, wenn die Benutzereingabe übermittelt wird und Sie ihn im Code lesen, sind die Daten im 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, ergeben sich die folgenden Fehlerergebnisse, 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 AsInt Methode auf. Wenn die Konvertierung erfolgreich ist, können Sie die Zahlen hinzufügen.
In der folgenden Tabelle sind einige allgemeine Konvertierungs- und Testmethoden für Variablen aufgeführt.
Methode
Beschreibung
Beispiel
AsInt(), IsInt()
Konvertiert eine Zeichenfolge, die eine ganze Zahl (z. B. "593") in eine ganze Zahl darstellt.
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()
Wandelt eine Zeichenfolge mit einem Dezimalwert wie "1,3" oder "7,439" in eine Gleitkommazahl um.
Dim myStringFloat = "41.432895"
Dim myFloatNum = myStringFloat.AsFloat()
AsDecimal(), IsDecimal()
Wandelt eine Zeichenfolge mit einem Dezimalwert wie "1,3" oder "7,439" in eine Dezimalzahl um. (In ASP.NET ist eine Dezimalzahl präziser als eine Gleitkommazahl.)
Dim myStringDec = "10317.425"
Dim myDecNum = myStringDec.AsDecimal()
AsDateTime(), IsDateTime()
Konvertiert eine Zeichenfolge, die einen Datums- und Uhrzeitwert darstellt, in den ASP.NET DateTime Typ.
Dim myDateString = "12/27/2012"
Dim newDate = myDateString.AsDateTime()
ToString()
Konvertiert alle anderen Datentypen 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()
Betriebspersonal
Ein Operator ist ein Schlüsselwort oder ein 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 am häufigsten verwendeten 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)
=
Zuordnung und Gleichheit. Entweder wird je nach Kontext der Wert auf der rechten Seite eines Anweisungssatzes dem Objekt auf der linken Seite zugewiesen, oder die Werte werden auf Gleichheit überprüft.
Dim age = 17
Dim income = Request("AnnualIncome")
<>
Ungleichheit. Gibt zurück True , wenn die Werte nicht gleich sind.
Dim theNum = 13
If theNum <> 15 Then
' Do something.
End If
< > <= >=
Kleiner als, größer als, kleiner als 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 zum Verbinden von Zeichenfolgen verwendet wird.
' The displayed result is "abcdef".
@("abc" & "def")
+= -=
Die Inkrement- und Dekrement-Operatoren, die jeweils 1 zu bzw. von einer Variablen addieren oder subtrahieren.
Dim theCount As Integer = 0
theCount += 1 ' Adds 1 to count
.
Punkt. Wird verwendet, um Objekte und deren Eigenschaften und Methoden zu unterscheiden.
Dim myUrl = Request.Url
Dim count = Request("Count").AsInt()
()
Klammern. Wird verwendet, um Ausdrücke zu gruppieren, Parameter an Methoden zu übergeben und auf Elemente von Arrays und Auflistungen zuzugreifen.
@(3 + 7)
@Request.MapPath(Request.FilePath)
Not
Nicht. Kehrt einen "wahren" Wert in falsch um und umgekehrt. Wird in der Regel als Kurzform zum Testen von False verwendet, das heißt für nicht True.
Dim taskCompleted As Boolean = False
' Processing.
If Not taskCompleted Then
' Continue processing
End If
AndAlso OrElse
Logische UND 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. Nachfolgend finden Sie ein Beispiel für eine 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 beispielsweise
http://myserverdem Ordner "C:\websites\mywebsite" auf dem Server entsprechen. - Ein virtueller Pfad ist eine Kurzform für die Darstellung von Pfaden im Code, ohne den gesamten Pfad angeben zu müssen. Er 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.
Hier ist ein Beispiel, das Ihnen dabei 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 Des Laufwerks C: ist . (Virtuelle Ordnerpfade verwenden immer Schrägstriche.) Der virtuelle Pfad eines Ordners muss nicht denselben Namen wie der physische Ordner haben. es kann ein Alias sein. (Auf Produktionsservern entspricht der virtuelle Pfad selten einem exakten physischen Pfad.)
Wenn Sie mit Dateien und Ordnern im Code arbeiten, müssen Sie manchmal auf den physischen Pfad und manchmal einen virtuellen Pfad verweisen, je nachdem, mit welchen Objekten Sie arbeiten. ASP.NET bietet Ihnen diese Tools zum Arbeiten mit Datei- und Ordnerpfaden im Code: der Server.MapPath Methode und dem Operator und ~ der Href Methode.
Konvertieren von virtuellen in physische Pfade: die Server.MapPath-Methode
Die Server.MapPath Methode konvertiert einen virtuellen Pfad (wie /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 das Lesen oder Schreiben einer Textdatei oder Bilddatei auf dem Webserver.
Normalerweise wissen Sie nicht den absoluten physischen Pfad Ihrer Website auf dem Server einer Hostingwebsite, sodass diese Methode den pfad konvertieren kann, den Sie kennen – den virtuellen Pfad – in den entsprechenden Pfad auf dem Server für Sie. Sie übergeben den virtuellen Pfad an eine Datei oder einen Ordner an die Methode und 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 unterbrochen. Es ist auch praktisch, wenn Sie Ihre Website jemals an einen anderen Ort verschieben. Nachfolgend finden Sie einige Beispiele:
@Code
Dim myImagesFolder = "~/images"
Dim myStyleSheet = "~/styles/StyleSheet.css"
End Code
Wenn die Website http://myserver/myapp ist, behandelt ASP.NET diese Pfade folgendermaßen, wenn die Seite ausgeführt wird:
-
myImagesFolder:http://myserver/myapp/images -
myStyleSheet:http://myserver/myapp/styles/Stylesheet.css
(Diese Pfade werden nicht wirklich als die Werte der Variablen dargestellt, aber ASP.NET behandelt die Pfade so, als ob sie es wären.)
Sie können den ~ Operator sowohl im Servercode (wie oben) als auch im Markup wie folgt 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, durchsieht ASP.NET die Seite (sowohl Code als auch Markup) und löst alle ~ Verweise auf den entsprechenden Pfad auf.
Bedingte Logik und Schleifen
Mit ASP.NET-Servercode können Sie Aufgaben basierend auf Bedingungen ausführen und Code schreiben, der Anweisungen eine bestimmte Anzahl von Malen wiederholt, also Code, der eine Schleife ausführt.
Testbedingungen
Um eine einfache Bedingung zu testen, verwenden Sie die If...Then Anweisung, die auf einem von Ihnen angegebenen Test zurückgibt True oder False basiert:
@Code
Dim showToday = True
If showToday Then
DateTime.Today
End If
End Code
Das If Schlüsselwort startet einen Block. Der tatsächliche Test (Bedingung) folgt dem If Schlüsselwort und gibt "true" oder "false" zurück. Die If Anweisung endet mit Then. Die Anweisungen, die ausgeführt werden, wenn der Test wahr ist, werden von If und End If eingeschlossen. Eine If Anweisung kann einen Else Block enthalten, der anweisungen angibt, die ausgeführt werden sollen, wenn die Bedingung falsch 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 einfach @ dem Block hinzufügen, und es wird funktionieren. Dieser Ansatz funktioniert sowohl mit If als auch mit anderen Visual Basic-Schlüsselwörtern, die von Codeblöcken gefolgt werden, einschließlich For, For Each, Do While usw.
@If showToday Then
DateTime.Today
Else
@<text>Sorry!</text>
End If
Sie können mehrere Bedingungen mit einem oder ElseIf mehreren Blöcken 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 erfüllt 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 ist in Klammern (im Beispiel die Wochentagvariable). 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:
Schleifencode
Häufig müssen Sie dieselben Anweisungen wiederholt ausführen. Dies erreichen Sie, indem Sie eine Schleife verwenden. Beispielsweise führen Sie häufig dieselben Anweisungen für jedes Element in einer Sammlung von Daten aus. Wenn Sie genau wissen, wie oft eine Schleife durchlaufen werden soll, können Sie eine For-Schleife verwenden. Diese Art von Schleife ist besonders nützlich zum Hoch- oder Herunterzählen.
@For i = 10 To 20
@<p>Item #: @i</p>
Next i
Die Schleife beginnt mit dem For Schlüsselwort, gefolgt von drei Elementen:
- Unmittelbar nach der
ForAnweisung deklarieren Sie eine Zählervariable (sie müssen nicht verwendenDim) und geben dann den Bereich an, wie in .i = 10 to 20Dies bedeutet, dass die Variableibei 10 beginnt und bis zum Erreichen von 20 (einschließlich) fortgesetzt wird. - Zwischen den Anweisungen
ForundNextbefindet sich der Inhalt des Blocks. Dies kann eine oder mehrere Codeanweisungen enthalten, die bei jedem Schleifendurchlauf ausgeführt werden. - Die
Next iAnweisung beendet die Schleife. Er erhöht den Zähler und startet die nächste Iteration der Schleife.
Die Codezeile zwischen den Zeilen For 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, wobei der Wert von i (der Zähler) angezeigt wird. Wenn Sie diese Seite ausführen, erstellt das Beispiel 11 Zeilen, die die Ausgabe anzeigen, mit dem Text in jeder Zeile, der die Elementnummer angibt.
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 für jedes Element in der Auflistung eine Aufgabe ausführen. Diese Art von Schleife eignet sich für Sammlungen, da Sie im Gegensatz zu einer For Schleife den Zähler nicht erhöhen oder einen Grenzwert festlegen müssen. Stattdessen durchläuft der For Each Schleifencode einfach die Sammlung, bis sie abgeschlossen ist.
In diesem Beispiel werden die Elemente in der Request.ServerVariables Auflistung zurückgegeben (die Informationen zu Ihrem Webserver enthalten). 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 For Each das Schlüsselwort folgt eine Variable, die ein einzelnes Element in der Auflistung darstellt (im Beispiel), myItemgefolgt vom In Schlüsselwort, gefolgt von der Auflistung, die Sie durchlaufen möchten. Im Textkörper der Schleife können Sie mithilfe der For Each zuvor deklarierten Variablen auf das aktuelle Element zugreifen.
Verwenden Sie die Anweisung Do While, 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, gefolgt von einer Bedingung, gefolgt von dem zu wiederholenden Block. Schleifen inkrementieren (erhöhen) oder dekrementieren (verringern) in der Regel eine Variable oder ein Objekt, die zum Zählen verwendet werden. Im Beispiel addiert der +=-Operator bei jeder Ausführung der Schleife 1 zum Wert einer Variablen. (Um eine Variable in einer Schleife zu verringern, die herunter zählt, verwenden Sie den Dekrementoperator -=.)
Objekte und Sammlungen
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 den Sie häufig in Ihrem Code arbeiten.
Page-Objekte
Das einfachste 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 Request des 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 Anforderung, 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 der Servercode die Ausführung abgeschlossen hat. Sie können diese Eigenschaft beispielsweise 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>
Auflistungsobjekte (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 Auflistungen, z. B. die Request.Files Sammlung.
Sie arbeiten häufig mit Daten in Sammlungen. Zwei allgemeine Sammlungstypen 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, um jedes Element aufzubewahren:
<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
Bei Arrays deklarieren Sie einen bestimmten Datentyp, z. B. String, Integer oder DateTime. Um anzugeben, dass die Variable ein Array enthalten kann, fügen Sie dem Variablennamen in der Deklaration Klammern hinzu (z. B Dim myVar() As String. ). Sie können mithilfe ihrer Position (Index) oder mithilfe der For Each Anweisung auf Elemente in einem Array zugreifen. Arrayindizes sind nullbasiert – d. h. das erste Element befindet sich an Position 0, das zweite Element befindet sich 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. Um die Position eines bestimmten Elements im Array abzurufen (d. h. zum Durchsuchen des Arrays), verwenden Sie die Array.IndexOf Methode. Sie können auch Aktionen wie das Umkehren des Inhalts eines Arrays (der Array.Reverse Methode) oder das Sortieren des Inhalts (der Array.Sort Methode) ausführen.
Die Ausgabe des Zeichenfolgen-Array-Codes, wie er in einem Browser angezeigt wird:
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>
Zum Erstellen eines Wörterbuchs verwenden Sie das New Schlüsselwort, um anzugeben, dass Sie ein neues Dictionary Objekt erstellen. Sie können einer Variablen mithilfe des Dim Schlüsselworts 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 Klammern hinzufügen, da dies tatsächlich 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, weisen die Objekte, mit denen Sie programmieren, Methoden auf. Ein Database Objekt kann z. B. eine Database.Connect Methode haben. Viele Methoden weisen auch einen oder mehrere Parameter auf. Ein Parameter ist ein Wert, den Sie an eine Methode übergeben, um die Aufgabe der Methode abzuschließen. 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 werden, 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. (Normalerweise kennen Sie diese Reihenfolge, indem Sie die Dokumentation für die Methode lesen.) Sie müssen der Reihenfolge folgen, und Sie können keine Parameter überspringen – falls erforderlich, ü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 einen Ordner mit dem Namen Skripts auf Ihrer Website haben. Der Code ruft die Request.MapPath Methode auf und übergibt Werte für die drei Parameter in der richtigen Reihenfolge. Anschließend wird der zugeordnete Pfad angezeigt.
@Code
' Pass parameters to a method using positional parameters.
Dim myPathPositional = Request.MapPath("/scripts", "/", true)
End Code
<p>@myPathPositional</p>
Wenn es viele Parameter für eine Methode gibt, können Sie ihren Code übersichtlicher und besser lesbar halten, indem Sie benannte Parameter verwenden. Wenn Sie eine Methode mit benannten Parametern aufrufen möchten, geben Sie den Parameternamen gefolgt von := und geben Sie dann den Wert an. Ein Vorteil benannter Parameter besteht darin, dass Sie sie in beliebiger Reihenfolge hinzufügen können. (Ein Nachteil ist, dass der Methodenaufruf nicht so kompakt ist.)
Das folgende Beispiel ruft die gleiche Methode wie oben auf, verwendet jedoch benannte Parameter, um die Werte zu liefern:
@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, wird derselbe Wert zurückgegeben.
Behandeln von Fehlern
Try-Catch-Anweisungen
Oft haben Sie Anweisungen in Ihrem Code, die aus Gründen außerhalb Ihrer Kontrolle fehlschlagen können. Beispiel:
- Wenn Ihr Code versucht, eine Datei zu öffnen, zu erstellen, zu lesen oder zu schreiben, treten möglicherweise alle möglichen Fehler auf. Die gewünschte Datei ist möglicherweise nicht vorhanden, möglicherweise gesperrt, der Code verfügt möglicherweise nicht über Berechtigungen usw.
- Wenn Ihr Code versucht, Datensätze in einer Datenbank zu aktualisieren, kann es Berechtigungsprobleme geben, die Verbindung mit der Datenbank möglicherweise gelöscht werden, die zu speichernden Daten sind möglicherweise ungültig usw.
In Programmierbedingungen werden diese Situationen als Ausnahmen bezeichnet. Wenn im Code eine Ausnahme auftritt, wird eine Fehlermeldung generiert (ausgelöst), die für Benutzer am besten lästig ist.
In Situationen, in denen ihr Code auf Ausnahmen stoßen kann, und um Fehlermeldungen dieses Typs zu vermeiden, können Sie Anweisungen verwenden Try/Catch . In der Try Anweisung führen Sie den von Ihnen überprüften Code aus. In einer oder mehreren Catch Anweisungen können Sie nach bestimmten Fehlern (spezifische Ausnahmearten) suchen, die möglicherweise aufgetreten sind. Sie können beliebig viele Catch Anweisungen einbeziehen, 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 zu einer Ausnahme auf Ihrer Seite führen kann.
Das folgende Beispiel zeigt eine Seite, die eine Textdatei in der ersten Anforderung erstellt und dann eine Schaltfläche anzeigt, über die der Benutzer die Datei öffnen kann. Im Beispiel wird absichtlich ein ungültiger Dateiname verwendet, sodass er eine Ausnahme verursacht. 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 eine Auskommentierung einer Anweisung im Beispiel aufheben, um zu sehen, wie sie ausgeführt wird, wenn alles ordnungsgemäß funktioniert.)
Wenn der Code die Ausnahme nicht behandelt hat, wird eine Fehlerseite wie der vorherige Screenshot angezeigt. Der Try/Catch Abschnitt verhindert jedoch, dass der Benutzer diese Arten von Fehlern sehen kann.
@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>