Razor söz dizimini kullanarak ASP.NET Web programlamaya giriş (Visual Basic)

Tom FitzMacken tarafından

Bu makalede, Razor söz dizimi ve Visual Basic kullanarak ASP.NET Web sayfalarıyla programlama hakkında genel bakış sunulmaktadır. ASP.NET, Microsoft 'un web sunucularında dinamik Web sayfaları çalıştırmaya yönelik teknolojisidir.

Şunları öğreneceksiniz:

  • Razor söz dizimi kullanarak programlama ASP.NET Web sayfaları ile çalışmaya başlama için en iyi 8 programlama ipuçları.
  • İhtiyaç duyacağınız temel programlama kavramları.
  • ASP.NET sunucu kodu ve Razor söz dizimi hepsi ile ilgilidir.

Yazılım sürümleri

  • ASP.NET Web sayfaları (Razor) 3

Bu öğretici, ASP.NET Web Pages 2 ile de kullanılabilir.

Razor söz dizimi kullanımı C#Ile ASP.NET Web sayfaları kullanmanın çoğu örneği. Ancak Razor söz dizimi de Visual Basic destekler. Visual Basic bir ASP.NET Web sayfasını programlamak için . vbhtml dosya adı uzantısıyla bir Web sayfası oluşturun ve sonra Visual Basic kodu ekleyin. Bu makalede, ASP.NET Web sayfaları oluşturmak için Visual Basic dili ve söz dizimi ile çalışmaya ilişkin bir genel bakış sunulmaktadır.

Note

Microsoft WebMatrix için varsayılan Web sitesi şablonları (Bakçılık, Fotoğraf Galerisive Başlangıç sitesi, vb.), C# ve Visual Basic sürümlerde mevcuttur. Visual Basic şablonlarını NuGet paketleri olarak yükleyebilirsiniz. Web sitesi şablonları, sitenizin kök klasörüne Microsoft şablonlaradlı bir klasöre yüklenir.

Ilk 8 programlama Ipuçları

Bu bölümde, Razor söz dizimi kullanarak ASP.NET sunucu kodu yazmaya başladığınızda kesinlikle bilmeniz gereken birkaç ipucu listelenmektedir.

1. @ karakterini kullanarak bir sayfaya kod eklersiniz

@ karakter, satır içi ifadeler, tek deyim blokları ve çok deyimli bloklar başlatır:

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

Bir tarayıcıda gösterilecek Sonuç:

Razor-Img1

Tip

HTML kodlaması

Önceki örneklerde olduğu gibi, @ karakterini kullanarak bir sayfada içerik görüntülediğinizde, ASP.NET HTML-, çıktıyı kodluyor. Bu, ayrılmış HTML karakterlerinin (< ve > ve &), karakterlerin HTML etiketleri veya varlıklar olarak yorumlanıp bir Web sayfasında karakter olarak görüntülenmesini sağlayan kodlarla değiştirilir. HTML kodlaması olmadan, sunucu kodunuzun çıktısı doğru görüntülenmeyebilir ve güvenlik risklerine karşı bir sayfa sunabilir.

Amacınız etiketleri biçimlendirme olarak işleyen (örneğin, bir paragraf için <p></p> ya da metin vurgulamak için <em></em>) HTML işaretlemesinin çıktısını alıyorsa, bu makalenin ilerleyen kısımlarında yer alan kod bloklarında metin, biçimlendirme ve kod birleştirme bölümüne bakın.

HTML kodlaması hakkında daha fazla bilgi için ASP.NET Web sayfaları SITELERINDE HTML formlarıyla çalışmamakalesini okuyun.

2. kod bloklarını kodla çevrele... Son kod

Bir kod bloğu bir veya daha fazla kod deyimi içerir ve Code ve End Codeanahtar sözcükleriyle alınmıştır. Açma Code anahtar sözcüğünü @ karakterden — hemen sonra yerleştirin, aralarında boşluk olamaz.

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

Bir tarayıcıda gösterilecek Sonuç:

Razor-Img2

3. bir blok içinde her bir kod ifadesini satır sonuyla sonlandırın

Visual Basic bir kod bloğunda, her bir ifade bir satır sonuyla biter. (Makalede daha sonra, uzun bir kod ifadesini, gerekirse birden çok satıra sarmanın bir yolunu görürsünüz.)

<!-- 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. değerleri depolamak için değişkenleri kullanırsınız

Değerleri dizeler, sayılar ve tarihler gibi bir değişkendesaklayabilirsiniz. Dim anahtar sözcüğünü kullanarak yeni bir değişken oluşturursunuz. @kullanarak doğrudan bir sayfada değişken değerleri ekleyebilirsiniz.

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

Bir tarayıcıda gösterilecek Sonuç:

Razor-IMG3

5. sabit dize değerlerini çift tırnak işaretleri içine alın

Dize , metin olarak kabul edilen bir karakter dizisidir. Bir dize belirtmek için, bunu çift tırnak işareti içine alın:

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

Bir dize değeri içinde çift tırnak işaretleri eklemek için iki çift tırnak işareti karakteri ekleyin. Çift tırnak karakterinin sayfa çıktısında bir kez görünmesini istiyorsanız, tırnak içine alınan dize içinde "" olarak girin ve iki kez görünmesini istiyorsanız, tırnak içine alınan dize içinde """" girin.

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

Bir tarayıcıda gösterilecek Sonuç:

Razor-Img4

6. Visual Basic kod büyük/küçük harfe duyarlı değildir

Visual Basic dili, büyük/küçük harfe duyarlı değildir. Programlama anahtar sözcükleri (Dim, Ifve Truegibi) ve değişken adları (myStringveya subTotalgibi) herhangi bir durumda yazılabilir.

Aşağıdaki kod satırları, küçük harfli bir ad kullanarak lastname değişkenine bir değer atar ve ardından değişken değerini büyük bir ad kullanarak sayfaya dönüştürür.

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

Bir tarayıcıda gösterilecek Sonuç:

vb-söz dizimi-5

7. kodlarınızın büyük bölümü nesnelerle çalışmayı içerir

Bir nesne, bir sayfa, metin kutusu, dosya — , görüntü, Web isteği, e-posta iletisi, müşteri kaydı (veritabanı satırı) vb. ile programlama yapamayacağınız şeyi temsil eder. Nesneler, özelliklerini — tanımlayan özellikleri içerir metin kutusu nesnesi bir Text özelliğine sahiptir, bir istek nesnesi bir Url özelliğine sahiptir, bir e-posta iletisi bir From özelliğine sahiptir ve bir müşteri nesnesi bir FirstName özelliğine sahiptir. Nesneler, gerçekleştirebilecekleri" "fiiller olan yöntemlere de sahiptir. Bir dosya nesnesinin Save yöntemi, bir görüntü nesnesinin Rotate yöntemi ve bir e-posta nesnesinin Send yöntemi sayılabilir.

Genellikle sayfadaki (metin kutuları, vb.) form alanlarının değerleri, istek ne tür bir tarayıcı, Kullanıcı kimliği, vb. gibi bilgiler sağlayan Request nesnesiyle çalışırsınız. Bu örnek, Request nesnesinin özelliklerine nasıl erişileceğinin yanı sıra sunucu üzerinde sayfanın mutlak yolunu sağlayan Request nesnesinin MapPath yönteminin nasıl çağrılacağını gösterir:

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

Bir tarayıcıda gösterilecek Sonuç:

Razor-Img5

8. kararları veren kodu yazabilirsiniz

Dinamik Web sayfalarının temel bir özelliği, koşullara göre ne yapılacağını belirleyebileceğinize bağlıdır. Bunu yapmanın en yaygın yolu If deyimidir (ve isteğe bağlı Else deyimidir).

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

If IsPost ifade, If IsPost = Trueyazmanın bir Özet yoludur. If deyimleriyle birlikte, bu makalenin ilerleyen kısımlarında açıklanan koşulları test etme, kod blokları yineleme ve benzeri birçok yol vardır.

Sonuç tarayıcıda ( Gönder'e tıklandıktan sonra) gösterilir:

Razor-Img6

Tip

HTTP GET ve POST yöntemleri ve ıspost özelliği

Web sayfaları (HTTP) için kullanılan protokol, sunucuya istek yapmak için kullanılan çok sınırlı sayıda yöntemi ("fiiller") destekler. En yaygın iki tane, bir sayfayı okumak için kullanılan ve bir sayfayı göndermek için kullanılan POST ' dır. Genellikle, Kullanıcı ilk kez bir sayfa istediğinde, sayfa GET kullanılarak istenir. Kullanıcı bir formu doldurduğunda ve Gönder' e tıkladığında, tarayıcı sunucuya bir post isteği yapar.

Web programlamada, sayfayı nasıl işleyeceğini bilmeniz için bir sayfanın GET veya POST olarak istenmekte olduğunu bilmeniz genellikle yararlı olur. ASP.NET Web sayfalarında, bir isteğin bir GET veya POST olup olmadığını görmek için IsPost özelliğini kullanabilirsiniz. İstek bir GÖNDERIME ise, IsPost özelliği true döndürür ve bir formdaki metin kutularının değerlerini okumak gibi şeyler yapabilirsiniz. Birçok örnek, IsPostdeğerine bağlı olarak sayfayı farklı şekilde nasıl işleyeceğini gösterir.

Basit bir kod örneği

Bu yordamda, temel programlama tekniklerini gösteren bir sayfanın nasıl oluşturulacağı gösterilmektedir. Örnekte, kullanıcıların iki sayı girmelerini sağlayan bir sayfa oluşturursunuz, sonra bunları ekler ve sonucu görüntüler.

  1. Düzenleyicinizde yeni bir dosya oluşturun ve AddNumbers. vbhtmlolarak adlandırın.

  2. Sayfada bulunan herhangi bir şeyi değiştirerek aşağıdaki kodu ve işaretlemeyi sayfaya kopyalayın.

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

    Dikkat etmeniz gereken bazı şeyler aşağıda verilmiştir:

    • @ karakteri sayfadaki ilk kod bloğunu başlatır ve en alta eklenen totalMessage değişkeninden önce gelir.
    • Sayfanın üst kısmındaki blok Code...End Codealınmıştır.
    • Değişkenler total, num1, num2ve totalMessage çeşitli sayıları ve bir dizeyi depolar.
    • totalMessage değişkenine atanan sabit dize değeri çift tırnak işaretleri içinde.
    • Visual Basic kod büyük/küçük harfe duyarlı olmadığından, sayfanın alt kısmında totalMessage değişkeni kullanıldığında, adının sayfanın en üstündeki değişken bildiriminin yazımla eşleşmesi gerekir. Büyük küçük harf büyük bir önemi yoktur.
    • num1.AsInt() + num2.AsInt() nesne ve yöntemlerle çalışmayı gösterir. Her bir değişkendeki AsInt yöntemi, bir kullanıcı tarafından girilen dizeyi eklenebilen bir tam sayıya (tamsayı) dönüştürür.
    • <form> etiketi bir method="post" özniteliği içerir. Bu, Kullanıcı Ekle' ye tıkladığında, SAYFANıN http post yöntemi kullanılarak sunucuya gönderileceğini belirtir. Sayfa gönderildiğinde, kod If IsPost doğru olarak değerlendirilir ve koşullu kod çalışır ve sayı ekleme sonucunu görüntüler.
  3. Sayfayı kaydedin ve bir tarayıcıda çalıştırın. (Çalıştırmadan önce sayfanın dosyalar çalışma alanında seçili olduğundan emin olun.) İki tam sayı girin ve Ekle düğmesine tıklayın.

    Razor-Img7

Visual Basic dil ve sözdizimi

Daha önce, bir ASP.NET Web sayfası oluşturma ve HTML biçimlendirmesine sunucu kodu ekleme hakkında temel bir örnek gördünüz. Burada, programlama dili kuralları Razor söz dizimi — kullanarak ASP.NET sunucu kodu yazmak için Visual Basic kullanmanın temellerini öğreneceksiniz.

Programlamayla karşılaşırsanız (özellikle C, C++, C#, Visual Basic veya JavaScript kullandıysanız), burada okuduğunuzdan büyük bir şey tanıdık gelecektir. Muhtemelen yalnızca WebMatrix kodunun . vbhtml dosyalarındaki biçimlendirmeye nasıl eklendiği hakkında bilgi almanız gerekir.

Kod bloklarında metin, biçimlendirme ve kod birleştirme

Sunucu kod blokları ' nda, genellikle sayfada metin ve biçimlendirmeyi çıkarmak isteyeceksiniz. Bir sunucu kod bloğu kod olmayan ve bunun yerine olarak işlenmesi gereken metin içeriyorsa, ASP.NET bu metni koddan ayırabilmelidir. Bunu yapmak için birkaç yol vardır.

  • Metni <p></p> veya <em></em>gibi bir HTML blok öğesine iliştirin:

    @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
    

    HTML öğesi metin, ek HTML öğeleri ve sunucu kodu ifadelerini içerebilir. ASP.NET, açılan HTML etiketini (örneğin, <p>) gördüğünde, öğe ve içeriğinin her şeyi tarayıcıya olduğu gibi işler (ve sunucu kodu ifadelerini çözümler).

  • @: işlecini veya <text> öğesini kullanın. @: düz metin veya eşleşmeyen HTML etiketleri içeren tek bir içerik satırı çıktısı verir; <text> öğesi çıktı için birden çok satır barındırır. Bu seçenekler, çıktının bir parçası olarak bir HTML öğesi işlemek istemediğinizde yararlıdır.

    @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
    

    Aşağıdaki örnek, önceki örneği yineler, ancak işlemek için metni içine almak için tek bir <text> etiketi kullanır.

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

    Aşağıdaki örnekte, <text> ve </text> etiketleri üç satırı kapsar; bunların hepsi, sunucu kodu ve eşleşen HTML etiketleriyle birlikte, bazı metin ve eşleşmeyen HTML etiketlerine (<br />) sahiptir. Ayrıca, @: işleçle her bir satırdan de tek başına bir kez daha olabilirsiniz; Her iki yöntem de geçerlidir.

    @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
    

    Note

    Bu bölümde — gösterildiği gibi metin yazdığınızda, bir HTML öğesi, @: işleci veya <text> öğesi — ASP.net, çıktıyı HTML olarak kodlamaz. (Daha önce belirtildiği gibi, ASP.NET, bu bölümde belirtilen özel durumlar dışında, daha önce @sunucu kod ifadelerinin ve sunucu kodu bloklarının çıkışını kodladır.)

Boşlu

Deyimdeki (ve dize sabit değerinin dışında) fazladan boşluklar, bu ifadeyi etkilemez:

@Code Dim personName =    "Smith"    End Code

Uzun deyimleri birden çok satıra ayırma

Her kod satırından sonra _ alt çizgi karakterini (Visual Basic devamlılık karakteriolarak adlandırılır) kullanarak, uzun bir kod ifadesini birden çok satıra kesebilirsiniz. Bir ifadeyi sonraki satıra bölmek için satırın sonunda bir boşluk ve sonra devamlılık karakteri ekleyin. Sonraki satırda ifadeye devam edin. Daha okunaklı olması için deyimlerini gereken sayıda satıra kaydırabilirsiniz. Aşağıdaki deyimler aynıdır:

@Code
    Dim familyName _
    =  "Smith" 
End Code

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

Ancak, bir satırı dize sabit değerinin ortasında kaydıramazsınız. Aşağıdaki örnek çalışmıyor:

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

Yukarıdaki kod gibi birden çok satıra kaydırılan uzun bir dizeyi birleştirmek için, bu makalede daha sonra göreceğiniz birleştirme işlecini (&) kullanmanız gerekir.

Kod açıklamaları

Açıklamalar sizin veya diğerleri için Not bırakmayı sağlar. Razor söz dizimi yorumlara ön ek olarak @* ve *@ile biter.

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

Kod blokları içinde Razor söz dizimi açıklamalarını kullanabilir veya her satıra ait tek tırnak (') olan sıradan Visual Basic açıklama karakterini kullanabilirsiniz.

@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

Değişkenler

Değişken, verileri depolamak için kullandığınız adlandırılmış bir nesnedir. Değişkenleri herhangi bir şekilde adlandırın, ancak ad alfabetik bir karakterle başlamalı ve boşluk ya da ayrılmış karakterler içeremez. Visual Basic ' de, daha önce gördüğünüz gibi, bir değişken adındaki harflerin büyük/küçük harf durumu büyük değildir.

Değişkenler ve veri türleri

Değişken, değişkende ne tür verilerin depolandığını gösteren belirli bir veri türüne sahip olabilir. Dize değerlerini depolayan dize değişkenleriniz ("Hello World"), tam sayı değerlerini depolayan tamsayı değişkenleri (3 veya 79 gibi) ve tarih değerlerini çeşitli biçimlerde depolayan Tarih değişkenlerini (4/12/2012 veya Mart 2009 gibi) kullanabilirsiniz. Ve kullanabileceğiniz pek çok farklı veri türü vardır.

Ancak, bir değişken için bir tür belirtmeniz gerekmez. Çoğu durumda ASP.NET, değişken içindeki verilerin nasıl kullanıldığını temel alarak türü belirleyebilir. (Bazen bir tür belirtmeniz gerekir; bunun doğru olduğu örnekleri görürsünüz.)

Bir tür belirtmeden bir değişken bildirmek için Dim ve değişken adını (örneğin, Dim myVar) kullanın. Bir türü olan bir değişken bildirmek için Dim ve değişken adını, ardından As ve ardından tür adını (örneğin, Dim myVar As String) kullanın.

@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

Aşağıdaki örnek, bir Web sayfasındaki değişkenleri kullanan bazı satır içi ifadeleri gösterir.

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

Bir tarayıcıda gösterilecek Sonuç:

Razor-Img9

Veri türlerini dönüştürme ve test etme

ASP.NET genellikle bir veri türünü otomatik olarak belirleyebilse de bazen olamaz. Bu nedenle, açık bir dönüştürme gerçekleştirerek ASP.NET Out 'a yardımcı olmanız gerekebilir. Türleri dönüştürmeniz gerekmese de, ne zaman çalıştığınız veri türlerini görmek için test etmeniz yararlı olur.

En yaygın durum, bir dizeyi tamsayı veya tarih gibi başka bir türe dönüştürmeniz gerekir. Aşağıdaki örnek, bir dizeyi bir sayıya dönüştürmeniz gereken tipik bir durumu gösterir.

@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

Kural olarak, Kullanıcı girişi size dizeler olarak gelir. Kullanıcıdan bir sayı girmesini isteyip istememiş olsanız bile, bir rakam girse bile, Kullanıcı girişi gönderildiğinde ve kodu kodda okuduğunuzda, veriler dize biçimindedir. Bu nedenle, dizeyi bir sayıya dönüştürmeniz gerekir. Örnekte, değerleri dönüşümlemeden aritmetik gerçekleştirmeye çalışırsanız, ASP.NET iki dize ekleyemediğinden aşağıdaki hata oluşur:

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

Değerleri tamsayılara dönüştürmek için AsInt yöntemini çağırın. Dönüştürme başarılı olursa, sayıları ekleyebilirsiniz.

Aşağıdaki tabloda, değişkenler için bazı ortak dönüştürme ve test yöntemleri listelenmektedir.

Yöntem

Açıklama

Örnek


AsInt(), IsInt()

Tam sayıyı temsil eden bir dizeyi ("593"gibi) tamsayıya dönüştürür.

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

AsBool(), IsBool()

"true" veya "false" gibi bir dizeyi Boolean bir türe dönüştürür.

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

AsFloat(), IsFloat()

"1,3" veya "" 7,439 gibi ondalık değeri olan bir dizeyi kayan noktalı bir sayıya dönüştürür.

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

AsDecimal(), IsDecimal()

"1,3" veya "" 7,439 gibi ondalık bir değere sahip bir dizeyi ondalık bir sayıya dönüştürür. (ASP.NET ' de, ondalık sayı bir kayan noktalı sayıdan daha belirgin olur.)

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

AsDateTime(), IsDateTime()

Bir tarih ve saat değerini temsil eden bir dizeyi ASP.NET DateTime türüne dönüştürür.

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

ToString()

Diğer veri türlerini bir dizeye dönüştürür.

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

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

İşleçler

İşleci, bir ifadede ne tür komutun gerçekleştirileceğini ASP.NET söyleyen bir anahtar sözcüktür veya karakterdir. Visual Basic birçok işleci destekler, ancak ASP.NET Web sayfaları geliştirmeye başlamak için yalnızca birkaçını belirlemeniz yeterlidir. Aşağıdaki tabloda en yaygın operatörler özetlenmektedir.

İşlecinde

Açıklama

Örnekler


+ - * /

Sayısal ifadelerde kullanılan matematik işleçleri.

@(5 + 13)

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

=

Atama ve eşitlik. Bağlama bağlı olarak, bir deyimin sağ tarafındaki değeri, sol taraftaki nesneye atar ya da değerleri eşitlik için denetler.

Dim age = 17

Dim income = Request("AnnualIncome")

<>

Olmama. Değerler eşit değilse True döndürür.

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

< > <= >=

Küçüktür, büyüktür, küçüktür veya eşittir, büyüktür veya eşittir.

If 2 < 3 Then
    ' Do something.
End If

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

&

Dizeleri birleştirmek için kullanılan birleştirme.

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

+= -=

Bir değişkenden 1 (sırasıyla) ekleyen ve çıkartacak artırma ve azaltma işleçleri.

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

.

Nokta. Nesneleri ve bunların özelliklerini ve yöntemlerini ayırt etmek için kullanılır.

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

()

Ayraçlar. İfadeleri gruplandırmak, parametreleri yöntemlere geçirmek ve dizi ve koleksiyonların üyelerine erişmek için kullanılır.

@(3 + 7)

@Request.MapPath(Request.FilePath)

Not

Başlatılmadı. True değerini false değerine tersine çevirir ve tam tersi de geçerlidir. Genellikle False test etmek için (Truedeğil) kısayol yöntemi olarak kullanılır.

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

AndAlso OrElse

Koşulları birbirine bağlamak için kullanılan mantıksal AND ve OR.

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

Kodda dosya ve klasör yollarıyla çalışma

Genellikle kodunuzda dosya ve klasör yolları ile çalışırsınız. Geliştirme bilgisayarınızda görünebilen bir Web sitesi için fiziksel klasör yapısına bir örnek aşağıda verilmiştir:

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

URL 'Ler ve yollarla ilgili bazı temel ayrıntılar aşağıda verilmiştir:

  • URL, bir etki alanı adı (http://www.example.com) veya sunucu adı (http://localhost, http://mycomputer) ile başlar.
  • Bir URL, ana bilgisayardaki fiziksel bir yola karşılık gelir. Örneğin, http://myserver sunucuda C:\websites\mywebsite klasörüne karşılık gelebilir.
  • Sanal yol, tüm yolu belirtmek zorunda kalmadan koddaki yolları temsil etmek için toplu bir yoldur. Bu, etki alanı veya sunucu adını izleyen bir URL 'nin bölümünü içerir. Sanal yollar kullandığınızda, yolları güncelleştirmek zorunda kalmadan kodunuzu farklı bir etki alanına veya sunucuya taşıyabilirsiniz.

Farklılıkları anlamanıza yardımcı olacak bir örnek aşağıda verilmiştir:

URL 'YI doldurun http://mycompanyserver/humanresources/CompanyPolicy.htm
Sunucu adı mycompanyserver
Sanal yol /humanresources/CompanyPolicy.htm
Fiziksel yol C:\websites\humanresources\companypolicy.htm

Sanal kök, C: sürücünüzün kökünde olduğu gibi/olur. (Sanal klasör yolları her zaman eğik çizgi kullanır.) Bir klasörün sanal yolunun fiziksel klasörle aynı ada sahip olması gerekmez; Bu bir diğer ad olabilir. (Üretim sunucularında, sanal yol nadiren tam bir fiziksel yolla eşleşir.)

Kodda dosya ve klasörlerle çalışırken, çalıştığınız nesnelere bağlı olarak, bazen fiziksel yola ve bazen bir sanal yola başvurmanız gerekir. ASP.NET, kodda dosya ve klasör yollarıyla çalışmak için size bu araçları sağlar: Server.MapPath yöntemi ve ~ işleci ve Href yöntemi.

Sanal fiziksel yollara dönüştürme: Server. MapPath yöntemi

Server.MapPath yöntemi, bir sanal yolu ( /default.exegibi) mutlak bir fiziksel yola ( C:\websites\mywebsitefolder\default.exegibi) dönüştürür. Bu yöntemi, tüm fiziksel yola ihtiyacınız olduğunda kullanırsınız. Tipik bir örnek, Web sunucusunda bir metin dosyası veya resim dosyası okurken veya yazarken bir örnektir.

Genellikle sitenizin bir barındırma sitesinin sunucusunda mutlak fiziksel yolunu bilemezsiniz; bu nedenle, bu yöntem, bildiğiniz yolu (sanal yol) sizin için sunucuda karşılık gelen yola dönüştürebilir. Bir dosya veya klasörün sanal yolunu yöntemine geçirirsiniz ve fiziksel yolu döndürür:

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

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

Sanal köke başvuruluyor: ~ operator ve href yöntemi

Bir . cshtml veya . vbhtml dosyasında, ~ işlecini kullanarak sanal kök yoluna başvurabilirsiniz. Sayfaları bir sitede bir konuma taşıyabilmeniz ve içerdikleri bağlantıların diğer sayfalara bölünememesi nedeniyle bu çok yararlı olur. Web sitenizi farklı bir konuma taşımanız durumunda da yararlıdır. İşte bazı örnekler:

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

Web sitesi http://myserver/myapp, sayfa çalışırken ASP.NET bu yolları nasıl değerlendilecektir:

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

(Bu yolları gerçekten değişkenin değerleri olarak görmezsiniz, ancak ASP.NET, bu gibi yollar gibi davranır.)

~ işlecini hem sunucu kodunda (yukarıdaki gibi) hem de biçimlendirme ' de şu şekilde kullanabilirsiniz:

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

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

Biçimlendirme ' de, görüntü dosyaları, diğer Web sayfaları ve CSS dosyaları gibi kaynaklara yollar oluşturmak için ~ işlecini kullanırsınız. Sayfa çalıştığında, ASP.NET sayfayı (hem kod hem de biçimlendirme) arar ve tüm ~ başvurularını uygun yola çözümler.

Koşullu mantık ve döngüler

ASP.NET sunucu kodu, koşullara göre görevleri gerçekleştirmenize ve deyimleri belirli sayıda kez tekrardan yineleme yapan kodu, yani bir döngüsü çalıştıran kodu yazmanızı sağlar.

Test koşulları

Basit bir koşulu test etmek için, belirttiğiniz bir teste göre True veya False döndüren If...Then ifadesini kullanın:

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

If anahtar sözcüğü bir blok başlatır. Gerçek test (koşul) If anahtar sözcüğünü izler ve true veya false değerini döndürür. If deyimin bitişi Then. Test true ise çalıştırılacak deyimler If ve End Iftarafından alınmıştır. If deyimi, koşul yanlış ise çalıştırılacak deyimleri belirten bir Else bloğu içerebilir:

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

If deyimi bir kod bloğu başlattığında, blokları dahil etmek için normal Code...End Code deyimlerini kullanmanız gerekmez. Yalnızca bloğa @ ekleyebilirsiniz ve bu işlem çalışır. Bu yaklaşım, For, For Each, Do While, vb. dahil olmak üzere kod blokları tarafından izlenen If ve diğer Visual Basic programlama anahtar kelimeleriyle birlikte kullanılır.

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

Bir veya daha çok ElseIf bloğu kullanarak birden çok koşul ekleyebilirsiniz:

@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

Bu örnekte, If bloğundaki ilk koşul doğru değilse, ElseIf koşulu denetlenir. Bu koşul karşılanıyorsa, ElseIf bloğundaki deyimler yürütülür. Koşulların hiçbiri karşılanmazsa, Else bloğundaki deyimler yürütülür. Herhangi bir sayıda ElseIf blok ekleyebilir ve sonra "her şeyi" koşulu olarak bir Else bloğuyla kapatabilirsiniz.

Çok sayıda koşulu test etmek için Select Case bloğunu kullanın:

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

Sınanacak değer parantez içinde (örnekte, haftanın günü değişkeni). Her bir test, bir değeri listeleyen Case bir ifade kullanır. Bir Case deyimin değeri test değeriyle eşleşiyorsa, bu Case bloğundaki kod yürütülür.

Bir tarayıcıda görünen son iki koşullu blok sonucu:

Razor-Img10

Döngü kodu

Genellikle aynı deyimleri tekrar tekrar çalıştırmanız gerekir. Bu, döngüye göre yapılır. Örneğin, çoğu kez bir veri koleksiyonundaki her öğe için aynı deyimleri çalıştırırsınız. Kaç kez döngüye almak istediğinizi biliyorsanız For döngüsünü kullanabilirsiniz. Bu tür bir döngü, özellikle daha fazla sayım veya sayım için yararlıdır:

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

Döngü, For anahtar sözcüğüyle başlar ve bunu üç öğe izler:

  • For deyimden hemen sonra, bir sayaç değişkeni bildirir (Dimkullanmanız gerekmez) ve sonra aralığı i = 10 to 20gibi belirtmeniz gerekir. Bu, i değişkeninin 10 ' da sayımının başlayacağı ve 20 ' ye (dahil) ulaşıncaya kadar devam edecek.
  • For ve Next deyimleri arasında bloğunun içeridir. Bu, her döngüyle yürütülen bir veya daha fazla kod deyimi içerebilir.
  • Next i deyimin döngüsü sona erer. Sayacı artırır ve döngünün bir sonraki yinelemesini başlatır.

For ve Next çizgileri arasındaki kod satırı, döngünün her yinelemesi için çalışan kodu içerir. Biçimlendirme, her seferinde yeni bir paragraf (<p> öğesi) oluşturur ve t değerini (sayaç) görüntüleyerek çıkışa bir satır ekler. Bu sayfayı çalıştırdığınızda örnek, her satırda öğe numarasını gösteren metinle birlikte çıktıyı görüntüleyen 11 satır oluşturur.

Razor-Img11

Bir koleksiyon veya dizi ile çalışıyorsanız, genellikle bir For Each döngüsü kullanırsınız. Bir koleksiyon benzer nesneler grubudur ve For Each döngüsü koleksiyondaki her öğe üzerinde bir görevi gerçekleştirmenizi sağlar. Bu tür bir döngü koleksiyonlar için uygundur, çünkü For döngüsünün aksine sayacı artırmanız veya bir sınır ayarlamanız gerekmez. Bunun yerine, For Each döngü kodu yalnızca, tamamlanana kadar koleksiyon üzerinden ilerler.

Bu örnek, Request.ServerVariables koleksiyonundaki öğeleri döndürür (Web sunucunuz hakkında bilgi içerir). HTML madde işaretli listesinde yeni bir <li> öğesi oluşturarak her öğenin adını göstermek için For Each döngüsünü kullanır.

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

For Each anahtar kelimesinin ardından, koleksiyondaki tek bir öğeyi temsil eden bir değişken gelir (örneğin, myItem), ardından In anahtar sözcüğü ve sonra, içinde döngü uygulamak istediğiniz koleksiyon. For Each döngüsünün gövdesinde, daha önce bildirdiğiniz değişkeni kullanarak geçerli öğeye erişebilirsiniz.

Razor-Img12

Daha genel amaçlı bir döngü oluşturmak için Do While ifadesini kullanın:

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

Bu döngü, Do While anahtar sözcüğüyle başlar ve sonra bir koşul gelir ve ardından yineleme, yinelenir. Döngüler genellikle sayma için kullanılan bir değişken veya nesneden artış (ekleme) veya azaltma (çıkarma). Örnekte += işleci, döngü her çalıştığında bir değişkenin değerine 1 ekler. (Bir döngüdeki bir değişkeni azaltmak için, azaltma işlecini -=kullanırsınız.)

Nesneler ve koleksiyonlar

Bir ASP.NET Web sitesindeki neredeyse her şey, Web sayfasının kendisi de dahil olmak üzere bir nesnedir. Bu bölümde, kodunuzda sıkça çalışacağımız bazı önemli nesneler açıklanmaktadır.

Sayfa nesneleri

ASP.NET ' deki en temel nesne, sayfasıdır. Sayfa nesnesinin özelliklerine, uygun herhangi bir nesne olmadan doğrudan erişebilirsiniz. Aşağıdaki kod, sayfanın Request nesnesini kullanarak sayfanın dosya yolunu alır:

@Code
    Dim path = Request.FilePath
End Code

Page nesnenin özelliklerini kullanarak çok fazla bilgi alabilirsiniz:

  • Request. Zaten gördüğünüze göre, bu, istek ne tür bir tarayıcı, sayfanın URL 'SI, Kullanıcı kimliği vb. gibi geçerli istek hakkındaki bilgilerin bir koleksiyonudur.

  • Response. Bu, sunucu kodunun çalışmayı tamamladığında tarayıcıya gönderilecek yanıt (sayfa) hakkındaki bilgilerin bir koleksiyonudur. Örneğin, yanıta bilgi yazmak için bu özelliği kullanabilirsiniz.

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

Koleksiyon nesneleri (diziler ve sözlükler)

Bir koleksiyon, bir veritabanından Customer nesneleri koleksiyonu gibi aynı türde bir nesne grubudur. ASP.NET, Request.Files koleksiyonu gibi birçok yerleşik koleksiyon içerir.

Genellikle koleksiyonlardaki verilerle çalışırsınız. İki ortak koleksiyon türü dizi ve sözlüktür. Bir dizi benzer öğeler koleksiyonunu depolamak istediğinizde ancak her bir öğeyi tutacak ayrı bir değişken oluşturmak istemediğinizde yararlıdır:

<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

Diziler ile, String, Integerveya DateTimegibi belirli bir veri türünü bildirirsiniz. Değişkenin bir dizi içerebileceğini belirtmek için, bildirimdeki değişken adına parantez eklersiniz (örneğin, Dim myVar() As String). Bir dizideki öğelere konumlarını (Dizin) veya For Each ifadesini kullanarak erişebilirsiniz. Dizi dizinleri sıfır tabanlıdır — , ilk öğe 0 ' dır, ikinci öğe ise 1 konumunda ve bu şekilde devam eder.

@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

Bir dizideki öğelerin sayısını Length özelliğini alarak belirleyebilirsiniz. Dizideki belirli bir öğenin konumunu almak için (yani, diziyi aramak için) Array.IndexOf yöntemini kullanın. Ayrıca, bir dizinin içeriğini ters çevirme (Array.Reverse yöntemi) veya içeriği sıralama (Array.Sort yöntemi) gibi işlemleri de yapabilirsiniz.

Bir tarayıcıda görünen dize dizisi kodunun çıkışı:

Razor-Img13

Sözlük, anahtar/değer çiftleri koleksiyonudur ve buna karşılık gelen değeri ayarlamak ya da almak için anahtarı (veya adı) sağlarsınız:

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

Sözlük oluşturmak için New anahtar sözcüğünü kullanarak yeni bir Dictionary nesnesi oluşturduğunuz anlamına gelir. Dim anahtar sözcüğünü kullanarak bir değişkene bir sözlük atayabilirsiniz. Parantez (( )) kullanarak Sözlükteki öğelerin veri türlerini gösterebilirsiniz. Bildirimin sonunda, bu gerçekte yeni bir sözlük oluşturan bir yöntem olduğundan, başka bir parantez çifti eklemelisiniz.

Sözlüğe öğe eklemek için, sözlük değişkeninin (Bu durumdamyScores) Add yöntemini çağırabilir ve sonra bir anahtar ve bir değer belirtebilirsiniz. Alternatif olarak, aşağıdaki örnekte olduğu gibi anahtarı göstermek ve basit bir atama yapmak için parantezleri kullanabilirsiniz:

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

Sözlükten bir değer almak için anahtarı parantez içinde belirtirsiniz:

@myScores("test4")

Yöntemler parametrelerle çağırma

Bu makalede daha önce gördüğünüz gibi, ile programlayabilmeniz gereken nesneler yöntemlerine sahiptir. Örneğin, bir Database nesnesi bir Database.Connect yöntemine sahip olabilir. Birçok yöntemde de bir veya daha fazla parametre vardır. Parametresi , bir yöntemine geçirdiğiniz bir değerdir ve bu yöntem, görevini tamamlamaya yönelik yöntemi etkinleştirir. Örneğin, üç parametre alan Request.MapPath yöntemi için bir bildirime bakın:

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

Bu yöntem, belirtilen sanal yola karşılık gelen sunucudaki fiziksel yolu döndürür. Yöntemi için üç parametre virtualPath, baseVirtualDirve allowCrossAppMapping. (Bildiriminde, parametrelerin kabul edeceği verilerin veri türleriyle listelendiğine dikkat edin.) Bu yöntemi çağırdığınızda, üç parametrenin de değerlerini sağlamanız gerekir.

Razor söz dizimi Visual Basic kullanırken, parametreleri bir yönteme geçirmek için iki seçeneğiniz vardır: Konumsal parametreler veya adlandırılmış parametreler. Konumsal parametreleri kullanarak bir yöntemi çağırmak için, parametreleri yöntem bildiriminde belirtilen katı bir sıraya geçirin. (Bu sırayı genellikle yöntemi için belgeleri okuyarak bilirsiniz.) Sırayı izlemeniz gerekir ve gerekirse parametrelerden — hiçbirini atlayamazsınız, bir değeri olmayan Konumsal parametre için boş bir dize ("") veya null geçirin.

Aşağıdaki örnek, Web sitenizde betikler adında bir klasörünüz olduğunu varsayar. Kod Request.MapPath yöntemini çağırır ve üç parametrenin değerlerini doğru sırada geçirir. Ardından, sonuçta elde edilen eşleştirilmiş yolu görüntüler.

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

Bir yöntem için çok sayıda parametre olduğunda, adlandırılmış parametreleri kullanarak kodunuzu temizleyicinizi ve daha okunaklı tutabilirsiniz. Adlandırılmış parametreleri kullanarak bir yöntemi çağırmak için, parametre adını ve ardından := belirtip değeri sağlayın. Adlandırılmış parametrelerin avantajı, bunları istediğiniz sırada ekleyebilmeniz. (Bir dezavantajı yöntem çağrısının sıkışık olmaması.)

Aşağıdaki örnek, yukarıdaki gibi aynı yöntemi çağırır, ancak değerleri sağlamak için adlandırılmış parametreleri kullanır:

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

Görebileceğiniz gibi, parametreler farklı bir sırayla geçirilir. Ancak, önceki örneği çalıştırırsanız ve bu örnekte, aynı değer döndürülür.

Hataları İşleme

Try-catch deyimleri

Kodunuzda, denetiminizin dışındaki nedenlerle başarısız olabilecek deyimler vardır. Örneğin:

  • Kodunuz bir dosyayı açmaya, oluşturmaya, okumaya veya yazmaya çalışırsa, tüm hata sıralamaları meydana gelebilir. İstediğiniz dosya mevcut olmayabilir, kilitli olabilir, kod izinlere sahip olmayabilir ve bu şekilde devam eder.
  • Benzer şekilde, kodunuz bir veritabanındaki kayıtları güncelleştirmeye çalışırsa, izin sorunları olabilir, veritabanı bağlantısı bırakılmış olabilir, kaydedilecek veriler geçersiz olabilir ve bu şekilde devam eder.

Programlama koşullarında, bu durumlara özel durumlardenir. Kodunuz bir özel durumla karşılaşırsa, en iyi ve rahatsız edici kullanıcılara bir hata mesajı üretir (atar).

Razor-Img14

Kodunuzun özel durumlarla karşılaşmasına ve bu türden hata iletilerinden kaçınmak için Try/Catch deyimlerini kullanabilirsiniz. Try bildiriminde, kontrol ettiğiniz kodu çalıştırırsınız. Bir veya daha fazla Catch deyiminde, oluşmuş olabilecek belirli hatalara (özel durum türleri) bakabilirsiniz. Benimsemeyi bekleme olduğunuz hatalara bakmak için gereken sayıda Catch deyimi ekleyebilirsiniz.

Note

Try/Catch deyimlerde Response.Redirect yöntemini kullanmaktan kaçınmanızı öneririz, çünkü sayfanızda bir özel duruma neden olabilir.

Aşağıdaki örnek, ilk istekte bir metin dosyası oluşturan ve sonra kullanıcının dosyayı açmasına olanak tanıyan bir düğme görüntüleyen bir sayfa gösterir. Örnek, bir özel duruma neden olacak şekilde hatalı bir dosya adı kullanır. Kod, olası iki özel durum için Catch deyimlerini içerir: dosya adı bozuksa oluşan FileNotFoundExceptionve ASP.NET bile klasörü bulamazsa oluşan DirectoryNotFoundException. (Her şey düzgün şekilde çalıştığında nasıl çalıştığını görmek için örnekteki bir deyimin açıklamasını değiştirebilirsiniz.)

Kodunuz özel durumu işlemediyse, önceki ekran görüntüsündeki gibi bir hata sayfası görürsünüz. Ancak, Try/Catch bölümü kullanıcının bu hata türlerini görmesini önlemeye yardımcı olur.

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

Ek Kaynaklar

Başvuru Belgeleri