Razor söz dizimini kullanarak ASP.NET Web programlamaya giriş (Visual Basic)Introduction to ASP.NET Web Programming Using the Razor Syntax (Visual Basic)

Tom FitzMacken tarafındanby Tom FitzMacken

Bu makalede, Razor söz dizimi ve Visual Basic kullanarak ASP.NET Web sayfalarıyla programlama hakkında genel bakış sunulmaktadır.This article gives you an overview of programming with ASP.NET Web Pages using the Razor syntax and Visual Basic. ASP.NET, Microsoft 'un web sunucularında dinamik Web sayfaları çalıştırmaya yönelik teknolojisidir.ASP.NET is Microsoft's technology for running dynamic web pages on web servers.

Şunları öğreneceksiniz:What you'll learn:

  • Razor söz dizimi kullanarak programlama ASP.NET Web sayfaları ile çalışmaya başlama için en iyi 8 programlama ipuçları.The top 8 programming tips for getting started with programming ASP.NET Web Pages using Razor syntax.
  • İhtiyaç duyacağınız temel programlama kavramları.Basic programming concepts you'll need.
  • ASP.NET sunucu kodu ve Razor söz dizimi hepsi ile ilgilidir.What ASP.NET server code and the Razor syntax is all about.

Yazılım sürümleriSoftware versions

  • ASP.NET Web sayfaları (Razor) 3ASP.NET Web Pages (Razor) 3

Bu öğretici, ASP.NET Web Pages 2 ile de kullanılabilir.This tutorial also works with ASP.NET Web Pages 2.

Razor söz dizimi kullanımı C#Ile ASP.NET Web sayfaları kullanmanın çoğu örneği.Most examples of using ASP.NET Web Pages with Razor syntax use C#. Ancak Razor söz dizimi de Visual Basic destekler.But the Razor syntax also supports Visual Basic. 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.To program an ASP.NET web page in Visual Basic, you create a web page with a .vbhtml filename extension, and then add Visual Basic code. 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.This article gives you an overview of working with the Visual Basic language and syntax to create ASP.NET Webpages.

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.The default website templates for Microsoft WebMatrix (Bakery, Photo Gallery, and Starter Site, etc.) are available in C# and Visual Basic versions. Visual Basic şablonlarını NuGet paketleri olarak yükleyebilirsiniz.You can install the Visual Basic templates by as NuGet packages. Web sitesi şablonları, sitenizin kök klasörüne Microsoft şablonlaradlı bir klasöre yüklenir.Website templates are installed in the root folder of your site in a folder named Microsoft Templates.

Ilk 8 programlama IpuçlarıThe Top 8 Programming Tips

Bu bölümde, Razor söz dizimi kullanarak ASP.NET sunucu kodu yazmaya başladığınızda kesinlikle bilmeniz gereken birkaç ipucu listelenmektedir.This section lists a few tips that you absolutely need to know as you start writing ASP.NET server code using the Razor syntax.

1. @ karakterini kullanarak bir sayfaya kod eklersiniz1. You add code to a page using the @ character

@ karakter, satır içi ifadeler, tek deyim blokları ve çok deyimli bloklar başlatır:The @ character starts inline expressions, single-statement blocks, and multi-statement blocks:

<!-- 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ç:The result displayed in a browser:

Razor-Img1

Tip

HTML kodlamasıHTML Encoding

Önceki örneklerde olduğu gibi, @ karakterini kullanarak bir sayfada içerik görüntülediğinizde, ASP.NET HTML-, çıktıyı kodluyor.When you display content in a page using the @ character, as in the preceding examples, ASP.NET HTML-encodes the output. 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.This replaces reserved HTML characters (such as < and > and &) with codes that enable the characters to be displayed as characters in a web page instead of being interpreted as HTML tags or entities. HTML kodlaması olmadan, sunucu kodunuzun çıktısı doğru görüntülenmeyebilir ve güvenlik risklerine karşı bir sayfa sunabilir.Without HTML encoding, the output from your server code might not display correctly, and could expose a page to security risks.

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.If your goal is to output HTML markup that renders tags as markup (for example <p></p> for a paragraph or <em></em> to emphasize text), see the section Combining Text, Markup, and Code in Code Blocks later in this article.

HTML kodlaması hakkında daha fazla bilgi için ASP.NET Web sayfaları SITELERINDE HTML formlarıyla çalışmamakalesini okuyun.You can read more about HTML encoding in Working with HTML Forms in ASP.NET Web Pages Sites.

2. kod bloklarını kodla çevrele... Son kod2. You enclose code blocks with Code...End Code

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 code block includes one or more code statements and is enclosed with the keywords Code and End Code. Açma Code anahtar sözcüğünü @ karakterden — hemen sonra yerleştirin, aralarında boşluk olamaz.Place the opening Code keyword immediately after the @ character — there can't be whitespace between them.

<!-- 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ç:The result displayed in a browser:

Razor-Img2

3. bir blok içinde her bir kod ifadesini satır sonuyla sonlandırın3. Inside a block, you end each code statement with a line break

Visual Basic bir kod bloğunda, her bir ifade bir satır sonuyla biter.In a Visual Basic code block, each statement ends with a line break. (Makalede daha sonra, uzun bir kod ifadesini, gerekirse birden çok satıra sarmanın bir yolunu görürsünüz.)(Later in the article you'll see a way to wrap a long code statement into multiple lines if needed.)

<!-- 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ız4. You use variables to store values

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.You can store values in a variable, including strings, numbers, and dates, etc. You create a new variable using the Dim keyword. @kullanarak doğrudan bir sayfada değişken değerleri ekleyebilirsiniz.You can insert variable values directly in a page using @.

<!-- 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ç:The result displayed in a browser:

Razor-IMG3

5. sabit dize değerlerini çift tırnak işaretleri içine alın5. You enclose literal string values in double quotation marks

Dize , metin olarak kabul edilen bir karakter dizisidir.A string is a sequence of characters that are treated as text. Bir dize belirtmek için, bunu çift tırnak işareti içine alın:To specify a string, you enclose it in double quotation marks:

@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.To embed double quotation marks within a string value, insert two double quotation mark characters. Ç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.If you want the double quotation character to appear once in the page output, enter it as "" within the quoted string, and if you want it to appear twice, enter it as """" within the quoted string.

<!-- 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ç:The result displayed in a browser:

Razor-Img4

6. Visual Basic kod büyük/küçük harfe duyarlı değildir6. Visual Basic code is not case sensitive

Visual Basic dili, büyük/küçük harfe duyarlı değildir.The Visual Basic language is not case sensitive. Programlama anahtar sözcükleri (Dim, Ifve Truegibi) ve değişken adları (myStringveya subTotalgibi) herhangi bir durumda yazılabilir.Programming keywords (like Dim, If, and True) and variable names (like myString, or subTotal) can be written in any case.

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.The following lines of code assign a value to the variable lastname using a lowercase name, and then output the variable value to the page using an uppercase name.

@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ç:The result displayed in a browser:

vb-söz dizimi-5

7. kodlarınızın büyük bölümü nesnelerle çalışmayı içerir7. Much of your coding involves working with objects

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.An object represents a thing that you can program with — a page, a text box, a file, an image, a web request, an email message, a customer record (database row), etc. Objects have properties that describe their characteristics — a text box object has a Text property, a request object has a Url property, an email message has a From property, and a customer object has a FirstName property. Nesneler, gerçekleştirebilecekleri" "fiiller olan yöntemlere de sahiptir.Objects also have methods that are the "verbs" they can perform. Bir dosya nesnesinin Save yöntemi, bir görüntü nesnesinin Rotate yöntemi ve bir e-posta nesnesinin Send yöntemi sayılabilir.Examples include a file object's Save method, an image object's Rotate method, and an email object's Send method.

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:You'll often work with the Request object, which gives you information like the values of form fields on the page (text boxes, etc.), what type of browser made the request, the URL of the page, the user identity, etc. This example shows how to access properties of the Request object and how to call the MapPath method of the Request object, which gives you the absolute path of the page on the server:

<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ç:The result displayed in a browser:

Razor-Img5

8. kararları veren kodu yazabilirsiniz8. You can write code that makes decisions

Dinamik Web sayfalarının temel bir özelliği, koşullara göre ne yapılacağını belirleyebileceğinize bağlıdır.A key feature of dynamic web pages is that you can determine what to do based on conditions. Bunu yapmanın en yaygın yolu If deyimidir (ve isteğe bağlı Else deyimidir).The most common way to do this is with the If statement (and optional Else statement).

@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.The statement If IsPost is a shorthand way of writing If IsPost = True. 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.Along with If statements, there are a variety of ways to test conditions, repeat blocks of code, and so on, which are described later in this article.

Sonuç tarayıcıda ( Gönder'e tıklandıktan sonra) gösterilir:The result displayed in a browser (after clicking Submit):

Razor-Img6

Tip

HTTP GET ve POST yöntemleri ve ıspost özelliğiHTTP GET and POST Methods and the IsPost Property

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.The protocol used for web pages (HTTP) supports a very limited number of methods ("verbs") that are used to make requests to the server. En yaygın iki tane, bir sayfayı okumak için kullanılan ve bir sayfayı göndermek için kullanılan POST ' dır.The two most common ones are GET, which is used to read a page, and POST, which is used to submit a page. Genellikle, Kullanıcı ilk kez bir sayfa istediğinde, sayfa GET kullanılarak istenir.In general, the first time a user requests a page, the page is requested using GET. Kullanıcı bir formu doldurduğunda ve Gönder' e tıkladığında, tarayıcı sunucuya bir post isteği yapar.If the user fills in a form and then clicks Submit, the browser makes a POST request to the server.

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.In web programming, it's often useful to know whether a page is being requested as a GET or as a POST so that you know how to process the page. ASP.NET Web sayfalarında, bir isteğin bir GET veya POST olup olmadığını görmek için IsPost özelliğini kullanabilirsiniz.In ASP.NET Web Pages, you can use the IsPost property to see whether a request is a GET or a POST. İ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.If the request is a POST, the IsPost property will return true, and you can do things like read the values of text boxes on a form. Birçok örnek, IsPostdeğerine bağlı olarak sayfayı farklı şekilde nasıl işleyeceğini gösterir.Many examples you'll see show you how to process the page differently depending on the value of IsPost.

Basit bir kod örneğiA Simple Code Example

Bu yordamda, temel programlama tekniklerini gösteren bir sayfanın nasıl oluşturulacağı gösterilmektedir.This procedure shows you how to create a page that illustrates basic programming techniques. Örnekte, kullanıcıların iki sayı girmelerini sağlayan bir sayfa oluşturursunuz, sonra bunları ekler ve sonucu görüntüler.In the example, you create a page that lets users enter two numbers, then it adds them and displays the result.

  1. Düzenleyicinizde yeni bir dosya oluşturun ve AddNumbers. vbhtmlolarak adlandırın.In your editor, create a new file and name it AddNumbers.vbhtml.

  2. Sayfada bulunan herhangi bir şeyi değiştirerek aşağıdaki kodu ve işaretlemeyi sayfaya kopyalayın.Copy the following code and markup into the page, replacing anything already in the page.

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

    Dikkat etmeniz gereken bazı şeyler aşağıda verilmiştir:Here are some things for you to note:

    • @ karakteri sayfadaki ilk kod bloğunu başlatır ve en alta eklenen totalMessage değişkeninden önce gelir.The @ character starts the first block of code in the page, and it precedes the totalMessage variable embedded near the bottom.
    • Sayfanın üst kısmındaki blok Code...End Codealınmıştır.The block at the top of the page is enclosed in Code...End Code.
    • Değişkenler total, num1, num2ve totalMessage çeşitli sayıları ve bir dizeyi depolar.The variables total, num1, num2, and totalMessage store several numbers and a string.
    • totalMessage değişkenine atanan sabit dize değeri çift tırnak işaretleri içinde.The literal string value assigned to the totalMessage variable is in double quotation marks.
    • 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.Because Visual Basic code is not case sensitive, when the totalMessage variable is used near the bottom of the page, its name only needs to match the spelling of the variable declaration at the top of the page. Büyük küçük harf büyük bir önemi yoktur.The casing doesn't matter.
    • num1.AsInt() + num2.AsInt() nesne ve yöntemlerle çalışmayı gösterir.The expression num1.AsInt() + num2.AsInt() shows how to work with objects and methods. 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.The AsInt method on each variable converts the string entered by a user to a whole number (an integer) that can be added.
    • <form> etiketi bir method="post" özniteliği içerir.The <form> tag includes a method="post" attribute. Bu, Kullanıcı Ekle' ye tıkladığında, SAYFANıN http post yöntemi kullanılarak sunucuya gönderileceğini belirtir.This specifies that when the user clicks Add, the page will be sent to the server using the HTTP POST method. 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.When the page is submitted, the code If IsPost evaluates to true and the conditional code runs, displaying the result of adding the numbers.
  3. Sayfayı kaydedin ve bir tarayıcıda çalıştırın.Save the page and run it in a browser. (Ç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.(Make sure the page is selected in the Files workspace before you run it.) Enter two whole numbers and then click the Add button.

    Razor-Img7

Visual Basic dil ve sözdizimiVisual Basic Language and Syntax

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.Earlier you saw a basic example of how to create an ASP.NET web page, and how you can add server code to HTML markup. Burada, programlama dili kuralları Razor söz dizimi — kullanarak ASP.NET sunucu kodu yazmak için Visual Basic kullanmanın temellerini öğreneceksiniz.Here you'll learn the basics of using Visual Basic to write ASP.NET server code using the Razor syntax — that is, the programming language rules.

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.If you're experienced with programming (especially if you've used C, C++, C#, Visual Basic, or JavaScript), much of what you read here will be familiar. Muhtemelen yalnızca WebMatrix kodunun . vbhtml dosyalarındaki biçimlendirmeye nasıl eklendiği hakkında bilgi almanız gerekir.You'll probably need to familiarize yourself only with how WebMatrix code is added to markup in .vbhtml files.

Kod bloklarında metin, biçimlendirme ve kod birleştirmeCombining text, markup, and code in code blocks

Sunucu kod blokları ' nda, genellikle sayfada metin ve biçimlendirmeyi çıkarmak isteyeceksiniz.In server code blocks, you'll often want to output text and markup to the page. Bir sunucu kod bloğu kod olmayan ve bunun yerine olarak işlenmesi gereken metin içeriyorsa, ASP.NET bu metni koddan ayırabilmelidir.If a server code block contains text that's not code and that instead should be rendered as is, ASP.NET needs to be able to distinguish that text from code. Bunu yapmak için birkaç yol vardır.There are several ways to do this.

  • Metni <p></p> veya <em></em>gibi bir HTML blok öğesine iliştirin:Enclose the text in an HTML block element like <p></p> or <em></em>:

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

    HTML öğesi metin, ek HTML öğeleri ve sunucu kodu ifadelerini içerebilir.The HTML element can include text, additional HTML elements, and server-code expressions. 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).When ASP.NET sees the opening HTML tag (for example, <p>), it renders everything the element and its content as is to the browser (and resolves the server-code expressions).

  • @: işlecini veya <text> öğesini kullanın.Use the @: operator or the <text> element. @: 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.The @: outputs a single line of content containing plain text or unmatched HTML tags; the <text> element encloses multiple lines to output. Bu seçenekler, çıktının bir parçası olarak bir HTML öğesi işlemek istemediğinizde yararlıdır.These options are useful when you don't want to render an HTML element as part of the output.

    @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.The following example repeats the previous example but uses a single pair of <text> tags to enclose the text to render.

    @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.In the following example, the <text> and </text> tags enclose three lines, all of which have some uncontained text and unmatched HTML tags (<br />), along with server code and matched HTML tags. Ayrıca, @: işleçle her bir satırdan de tek başına bir kez daha olabilirsiniz; Her iki yöntem de geçerlidir.Again, you could also precede each line individually with the @: operator; either way works.

    @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.When you output text as shown in this section — using an HTML element, the @: operator, or the <text> element — ASP.NET doesn't HTML-encode the output. (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.)(As noted earlier, ASP.NET does encode the output of server code expressions and server code blocks that are preceded by @, except in the special cases noted in this section.)

BoşluWhitespace

Deyimdeki (ve dize sabit değerinin dışında) fazladan boşluklar, bu ifadeyi etkilemez:Extra spaces in a statement (and outside of a string literal) don't affect the statement:

@Code Dim personName =    "Smith"    End Code

Uzun deyimleri birden çok satıra ayırmaBreaking long statements into multiple lines

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.You can break a long code statement into multiple lines by using the underscore character _ (which in Visual Basic is called the continuation character) after each line of code. Bir ifadeyi sonraki satıra bölmek için satırın sonunda bir boşluk ve sonra devamlılık karakteri ekleyin.To break a statement onto the next line, at the end of the line add a space and then the continuation character. Sonraki satırda ifadeye devam edin.Continue the statement on the next line. Daha okunaklı olması için deyimlerini gereken sayıda satıra kaydırabilirsiniz.You can wrap statements onto as many lines as you need to improve readability. Aşağıdaki deyimler aynıdır:The following statements are the same:

@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.However, you can't wrap a line in the middle of a string literal. Aşağıdaki örnek çalışmıyor:The following example doesn't work:

@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.To combine a long string that wraps to multiple lines like the above code, you would need to use the concatenation operator (&), which you'll see later in this article.

Kod açıklamalarıCode comments

Açıklamalar sizin veya diğerleri için Not bırakmayı sağlar.Comments let you leave notes for yourself or others. Razor söz dizimi yorumlara ön ek olarak @* ve *@ile biter.Razor syntax comments are prefixed with @* and end with *@.

@* 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.Within code blocks you can use the Razor syntax comments, or you can use ordinary Visual Basic comment character, which is a single quote (') prefixed to each line.

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

Değişken, verileri depolamak için kullandığınız adlandırılmış bir nesnedir.A variable is a named object that you use to store data. 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.You can name variables anything, but the name must begin with an alphabetic character and it cannot contain whitespace or reserved characters. 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.In Visual Basic, as you saw earlier, the case of the letters in a variable name doesn't matter.

Değişkenler ve veri türleriVariables and data types

Değişken, değişkende ne tür verilerin depolandığını gösteren belirli bir veri türüne sahip olabilir.A variable can have a specific data type, which indicates what kind of data is stored in the variable. 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.You can have string variables that store string values (like "Hello world"), integer variables that store whole-number values (like 3 or 79), and date variables that store date values in a variety of formats (like 4/12/2012 or March 2009). Ve kullanabileceğiniz pek çok farklı veri türü vardır.And there are many other data types you can use.

Ancak, bir değişken için bir tür belirtmeniz gerekmez.However, you don't have to specify a type for a variable. Çoğu durumda ASP.NET, değişken içindeki verilerin nasıl kullanıldığını temel alarak türü belirleyebilir.In most cases ASP.NET can figure out the type based on how the data in the variable is being used. (Bazen bir tür belirtmeniz gerekir; bunun doğru olduğu örnekleri görürsünüz.)(Occasionally you must specify a type; you'll see examples where this is true.)

Bir tür belirtmeden bir değişken bildirmek için Dim ve değişken adını (örneğin, Dim myVar) kullanın.To declare a variable without specifying a type, use Dim plus the variable name (for instance, Dim myVar). 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.To declare a variable with a type, use Dim plus the variable name, followed by As and then the type name (for instance, Dim myVar As String).

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

Aşağıdaki örnek, bir Web sayfasındaki değişkenleri kullanan bazı satır içi ifadeleri gösterir.The following example shows some inline expressions that use the variables in a web page.

@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ç:The result displayed in a browser:

Razor-Img9

Veri türlerini dönüştürme ve test etmeConverting and testing data types

ASP.NET genellikle bir veri türünü otomatik olarak belirleyebilse de bazen olamaz.Although ASP.NET can usually determine a data type automatically, sometimes it can't. Bu nedenle, açık bir dönüştürme gerçekleştirerek ASP.NET Out 'a yardımcı olmanız gerekebilir.Therefore, you might need to help ASP.NET out by performing an explicit conversion. 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.Even if you don't have to convert types, sometimes it's helpful to test to see what type of data you might be working with.

En yaygın durum, bir dizeyi tamsayı veya tarih gibi başka bir türe dönüştürmeniz gerekir.The most common case is that you have to convert a string to another type, such as to an integer or date. Aşağıdaki örnek, bir dizeyi bir sayıya dönüştürmeniz gereken tipik bir durumu gösterir.The following example shows a typical case where you must convert a string to a number.

@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.As a rule, user input comes to you as strings. 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.Even if you've prompted the user to enter a number, and even if they've entered a digit, when user input is submitted and you read it in code, the data is in string format. Bu nedenle, dizeyi bir sayıya dönüştürmeniz gerekir.Therefore, you must convert the string to a number. Ö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:In the example, if you try to perform arithmetic on the values without converting them, the following error results, because ASP.NET cannot add two strings:

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

Değerleri tamsayılara dönüştürmek için AsInt yöntemini çağırın.To convert the values to integers, you call the AsInt method. Dönüştürme başarılı olursa, sayıları ekleyebilirsiniz.If the conversion is successful, you can then add the numbers.

Aşağıdaki tabloda, değişkenler için bazı ortak dönüştürme ve test yöntemleri listelenmektedir.The following table lists some common conversion and test methods for variables.

YöntemMethod

AçıklamaDescription

ÖrnekExample


AsInt(), IsInt()

Tam sayıyı temsil eden bir dizeyi ("593"gibi) tamsayıya dönüştürür.Converts a string that represents a whole number (like "593") to an integer.

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.Converts a string like "true" or "false" to a Boolean type.

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.Converts a string that has a decimal value like "1.3" or "7.439" to a floating-point number.

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.Converts a string that has a decimal value like "1.3" or "7.439" to a decimal number. (ASP.NET ' de, ondalık sayı bir kayan noktalı sayıdan daha belirgin olur.)(In ASP.NET, a decimal number is more precise than a floating-point number.)

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.Converts a string that represents a date and time value to the ASP.NET DateTime type.

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

ToString()

Diğer veri türlerini bir dizeye dönüştürür.Converts any other data type to a string.

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

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

İşleçlerOperators

İşleci, bir ifadede ne tür komutun gerçekleştirileceğini ASP.NET söyleyen bir anahtar sözcüktür veya karakterdir.An operator is a keyword or character that tells ASP.NET what kind of command to perform in an expression. Visual Basic birçok işleci destekler, ancak ASP.NET Web sayfaları geliştirmeye başlamak için yalnızca birkaçını belirlemeniz yeterlidir.Visual Basic supports many operators, but you only need to recognize a few to get started developing ASP.NET web pages. Aşağıdaki tabloda en yaygın operatörler özetlenmektedir.The following table summarizes the most common operators.

İşlecindeOperator

AçıklamaDescription

ÖrneklerExamples


+ - * /

Sayısal ifadelerde kullanılan matematik işleçleri.Math operators used in numerical expressions.

@(5 + 13)

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

=

Atama ve eşitlik.Assignment and equality. 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.Depending on context, either assigns the value on the right side of a statement to the object on the left side, or checks the values for equality.

Dim age = 17

Dim income = Request("AnnualIncome")

<>

Olmama.Inequality. Değerler eşit değilse True döndürür.Returns True if the values are not equal.

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.Less than, greater than, less than or equal, and greater than or equal.

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.Concatenation, which is used to join strings.

' 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.The increment and decrement operators, which add and subtract 1 (respectively) from a variable.

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

.

Nokta.Dot. Nesneleri ve bunların özelliklerini ve yöntemlerini ayırt etmek için kullanılır.Used to distinguish objects and their properties and methods.

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

()

Ayraçlar.Parentheses. İfadeleri gruplandırmak, parametreleri yöntemlere geçirmek ve dizi ve koleksiyonların üyelerine erişmek için kullanılır.Used to group expressions, to pass parameters to methods, and to access members of arrays and collections.

@(3 + 7)

@Request.MapPath(Request.FilePath)

Not

Başlatılmadı.Not. True değerini false değerine tersine çevirir ve tam tersi de geçerlidir.Reverses a true value to false and vice versa. Genellikle False test etmek için (Truedeğil) kısayol yöntemi olarak kullanılır.Typically used as a shorthand way to test for False (that is, for not True).

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.Logical AND and OR, which are used to link conditions together.

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ışmaWorking with File and Folder Paths in Code

Genellikle kodunuzda dosya ve klasör yolları ile çalışırsınız.You'll often work with file and folder paths in your code. 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:Here is an example of physical folder structure for a website as it might appear on your development computer:

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:Here are some essential details about URLs and paths:

  • URL, bir etki alanı adı (http://www.example.com) veya sunucu adı (http://localhost, http://mycomputer) ile başlar.A URL begins with either a domain name (http://www.example.com) or a server name (http://localhost, http://mycomputer).
  • Bir URL, ana bilgisayardaki fiziksel bir yola karşılık gelir.A URL corresponds to a physical path on a host computer. Örneğin, http://myserver sunucuda C:\websites\mywebsite klasörüne karşılık gelebilir.For example, http://myserver might correspond to the folder C:\websites\mywebsite on the server.
  • Sanal yol, tüm yolu belirtmek zorunda kalmadan koddaki yolları temsil etmek için toplu bir yoldur.A virtual path is shorthand to represent paths in code without having to specify the full path. Bu, etki alanı veya sunucu adını izleyen bir URL 'nin bölümünü içerir.It includes the portion of a URL that follows the domain or server name. Sanal yollar kullandığınızda, yolları güncelleştirmek zorunda kalmadan kodunuzu farklı bir etki alanına veya sunucuya taşıyabilirsiniz.When you use virtual paths, you can move your code to a different domain or server without having to update the paths.

Farklılıkları anlamanıza yardımcı olacak bir örnek aşağıda verilmiştir:Here's an example to help you understand the differences:

URL 'YI doldurunComplete URL http://mycompanyserver/humanresources/CompanyPolicy.htm
Sunucu adıServer name mycompanyservermycompanyserver
Sanal yolVirtual path /humanresources/CompanyPolicy.htm/humanresources/CompanyPolicy.htm
Fiziksel yolPhysical path C:\websites\humanresources\companypolicy.htmC:\mywebsites\humanresources\CompanyPolicy.htm

Sanal kök, C: sürücünüzün kökünde olduğu gibi/olur.The virtual root is /, just like the root of your C: drive is . (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.(Virtual folder paths always use forward slashes.) The virtual path of a folder doesn't have to have the same name as the physical folder; it can be an alias. (Üretim sunucularında, sanal yol nadiren tam bir fiziksel yolla eşleşir.)(On production servers, the virtual path rarely matches an exact physical path.)

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.When you work with files and folders in code, sometimes you need to reference the physical path and sometimes a virtual path, depending on what objects you're working with. 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.ASP.NET gives you these tools for working with file and folder paths in code: the Server.MapPath method, and the ~ operator and Href method.

Sanal fiziksel yollara dönüştürme: Server. MapPath yöntemiConverting virtual to physical paths: the Server.MapPath method

Server.MapPath yöntemi, bir sanal yolu ( /default.exegibi) mutlak bir fiziksel yola ( C:\websites\mywebsitefolder\default.exegibi) dönüştürür.The Server.MapPath method converts a virtual path (like /default.cshtml) to an absolute physical path (like C:\WebSites\MyWebSiteFolder\default.cshtml). Bu yöntemi, tüm fiziksel yola ihtiyacınız olduğunda kullanırsınız.You use this method any time you need a complete physical path. Tipik bir örnek, Web sunucusunda bir metin dosyası veya resim dosyası okurken veya yazarken bir örnektir.A typical example is when you're reading or writing a text file or image file on the web server.

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.You typically don't know the absolute physical path of your site on a hosting site's server, so this method can convert the path you do know — the virtual path — to the corresponding path on the server for you. Bir dosya veya klasörün sanal yolunu yöntemine geçirirsiniz ve fiziksel yolu döndürür:You pass the virtual path to a file or folder to the method, and it returns the physical path:

@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öntemiReferencing the virtual root: the ~ operator and Href method

Bir . cshtml veya . vbhtml dosyasında, ~ işlecini kullanarak sanal kök yoluna başvurabilirsiniz.In a .cshtml or .vbhtml file, you can reference the virtual root path using the ~ operator. 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.This is very handy because you can move pages around in a site, and any links they contain to other pages won't be broken. Web sitenizi farklı bir konuma taşımanız durumunda da yararlıdır.It's also handy in case you ever move your website to a different location. İşte bazı örnekler:Here are some examples:

@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:If the website is http://myserver/myapp, here's how ASP.NET will treat these paths when the page runs:

  • myImagesFolder: http://myserver/myapp/imagesmyImagesFolder: http://myserver/myapp/images
  • myStyleSheet: http://myserver/myapp/styles/Stylesheet.cssmyStyleSheet : 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.)(You won't actually see these paths as the values of the variable, but ASP.NET will treat the paths as if that's what they were.)

~ işlecini hem sunucu kodunda (yukarıdaki gibi) hem de biçimlendirme ' de şu şekilde kullanabilirsiniz:You can use the ~ operator both in server code (as above) and in markup, like this:

<!-- 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.In markup, you use the ~ operator to create paths to resources like image files, other web pages, and CSS files. Sayfa çalıştığında, ASP.NET sayfayı (hem kod hem de biçimlendirme) arar ve tüm ~ başvurularını uygun yola çözümler.When the page runs, ASP.NET looks through the page (both code and markup) and resolves all the ~ references to the appropriate path.

Koşullu mantık ve döngülerConditional Logic and Loops

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.ASP.NET server code lets you perform tasks based on conditions and write code that repeats statements a specific number of times that is, code that runs a loop).

Test koşullarıTesting conditions

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:To test a simple condition you use the If...Then statement, which returns True or False based on a test you specify:

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

If anahtar sözcüğü bir blok başlatır.The If keyword starts a block. Gerçek test (koşul) If anahtar sözcüğünü izler ve true veya false değerini döndürür.The actual test (condition) follows the If keyword and returns true or false. If deyimin bitişi Then.The If statement ends with Then. Test true ise çalıştırılacak deyimler If ve End Iftarafından alınmıştır.The statements that will run if the test is true are enclosed by If and End If. If deyimi, koşul yanlış ise çalıştırılacak deyimleri belirten bir Else bloğu içerebilir:An If statement can include an Else block that specifies statements to run if the condition is false:

@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.If an If statement starts a code block, you don't have to use the normal Code...End Code statements to include the blocks. Yalnızca bloğa @ ekleyebilirsiniz ve bu işlem çalışır.You can just add @ to the block, and it will work. 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.This approach works with If as well as other Visual Basic programming keywords that are followed by code blocks, including For, For Each, Do While, etc.

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

Bir veya daha çok ElseIf bloğu kullanarak birden çok koşul ekleyebilirsiniz:You can add multiple conditions using one or more ElseIf blocks:

@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.In this example, if the first condition in the If block is not true, the ElseIf condition is checked. Bu koşul karşılanıyorsa, ElseIf bloğundaki deyimler yürütülür.If that condition is met, the statements in the ElseIf block are executed. Koşulların hiçbiri karşılanmazsa, Else bloğundaki deyimler yürütülür.If none of the conditions are met, the statements in the Else block are executed. Herhangi bir sayıda ElseIf blok ekleyebilir ve sonra "her şeyi" koşulu olarak bir Else bloğuyla kapatabilirsiniz.You can add any number of ElseIf blocks, and then close with an Else block as the "everything else" condition.

Çok sayıda koşulu test etmek için Select Case bloğunu kullanın:To test a large number of conditions, use a Select Case block:

@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).The value to test is in parentheses (in the example, the weekday variable). Her bir test, bir değeri listeleyen Case bir ifade kullanır.Each individual test uses a Case statement that lists a value. Bir Case deyimin değeri test değeriyle eşleşiyorsa, bu Case bloğundaki kod yürütülür.If the value of a Case statement matches the test value, the code in that Case block is executed.

Bir tarayıcıda görünen son iki koşullu blok sonucu:The result of the last two conditional blocks displayed in a browser:

Razor-Img10

Döngü koduLooping code

Genellikle aynı deyimleri tekrar tekrar çalıştırmanız gerekir.You often need to run the same statements repeatedly. Bu, döngüye göre yapılır.You do this by looping. Örneğin, çoğu kez bir veri koleksiyonundaki her öğe için aynı deyimleri çalıştırırsınız.For example, you often run the same statements for each item in a collection of data. Kaç kez döngüye almak istediğinizi biliyorsanız For döngüsünü kullanabilirsiniz.If you know exactly how many times you want to loop, you can use a For loop. Bu tür bir döngü, özellikle daha fazla sayım veya sayım için yararlıdır:This kind of loop is especially useful for counting up or counting down:

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

Döngü, For anahtar sözcüğüyle başlar ve bunu üç öğe izler:The loop begins with the For keyword, followed by three elements:

  • For deyimden hemen sonra, bir sayaç değişkeni bildirir (Dimkullanmanız gerekmez) ve sonra aralığı i = 10 to 20gibi belirtmeniz gerekir.Immediately after the For statement, you declare a counter variable (you don't have to use Dim) and then indicate the range, as in i = 10 to 20. Bu, i değişkeninin 10 ' da sayımının başlayacağı ve 20 ' ye (dahil) ulaşıncaya kadar devam edecek.This means the variable i will start counting at 10 and continue until it reaches 20 (inclusive).
  • For ve Next deyimleri arasında bloğunun içeridir.Between the For and Next statements is the content of the block. Bu, her döngüyle yürütülen bir veya daha fazla kod deyimi içerebilir.This can contain one or more code statements that execute with each loop.
  • Next i deyimin döngüsü sona erer.The Next i statement ends the loop. Sayacı artırır ve döngünün bir sonraki yinelemesini başlatır.It increments the counter and starts the next iteration of the loop.

For ve Next çizgileri arasındaki kod satırı, döngünün her yinelemesi için çalışan kodu içerir.The line of code between the For and Next lines contains the code that runs for each iteration of the loop. 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.The markup creates a new paragraph (<p> element) each time and adds a line to the output, displaying the value of i (the counter). 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.When you run this page, the example creates 11 lines displaying the output, with the text in each line indicating the item number.

Razor-Img11

Bir koleksiyon veya dizi ile çalışıyorsanız, genellikle bir For Each döngüsü kullanırsınız.If you're working with a collection or array, you often use a For Each loop. Bir koleksiyon benzer nesneler grubudur ve For Each döngüsü koleksiyondaki her öğe üzerinde bir görevi gerçekleştirmenizi sağlar.A collection is a group of similar objects, and the For Each loop lets you carry out a task on each item in the collection. 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.This type of loop is convenient for collections, because unlike a For loop, you don't have to increment the counter or set a limit. Bunun yerine, For Each döngü kodu yalnızca, tamamlanana kadar koleksiyon üzerinden ilerler.Instead, the For Each loop code simply proceeds through the collection until it's finished.

Bu örnek, Request.ServerVariables koleksiyonundaki öğeleri döndürür (Web sunucunuz hakkında bilgi içerir).This example returns the items in the Request.ServerVariables collection (which contains information about your web server). 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.It uses a For Each loop to display the name of each item by creating a new <li> element in an HTML bulleted list.

<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.The For Each keyword is followed by a variable that represents a single item in the collection (in the example, myItem), followed by the In keyword, followed by the collection you want to loop through. For Each döngüsünün gövdesinde, daha önce bildirdiğiniz değişkeni kullanarak geçerli öğeye erişebilirsiniz.In the body of the For Each loop, you can access the current item using the variable that you declared earlier.

Razor-Img12

Daha genel amaçlı bir döngü oluşturmak için Do While ifadesini kullanın:To create a more general-purpose loop, use the Do While statement:

@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.This loop begins with the Do While keyword, followed by a condition, followed by the block to repeat. Döngüler genellikle sayma için kullanılan bir değişken veya nesneden artış (ekleme) veya azaltma (çıkarma).Loops typically increment (add to) or decrement (subtract from) a variable or object used for counting. Örnekte += işleci, döngü her çalıştığında bir değişkenin değerine 1 ekler.In the example, the += operator adds 1 to the value of a variable each time the loop runs. (Bir döngüdeki bir değişkeni azaltmak için, azaltma işlecini -=kullanırsınız.)(To decrement a variable in a loop that counts down, you would use the decrement operator -=.)

Nesneler ve koleksiyonlarObjects and Collections

Bir ASP.NET Web sitesindeki neredeyse her şey, Web sayfasının kendisi de dahil olmak üzere bir nesnedir.Nearly everything in an ASP.NET website is an object, including the web page itself. Bu bölümde, kodunuzda sıkça çalışacağımız bazı önemli nesneler açıklanmaktadır.This section discusses some important objects you'll work with frequently in your code.

Sayfa nesneleriPage objects

ASP.NET ' deki en temel nesne, sayfasıdır.The most basic object in ASP.NET is the page. Sayfa nesnesinin özelliklerine, uygun herhangi bir nesne olmadan doğrudan erişebilirsiniz.You can access properties of the page object directly without any qualifying object. Aşağıdaki kod, sayfanın Request nesnesini kullanarak sayfanın dosya yolunu alır:The following code gets the page's file path, using the Request object of the page:

@Code
    Dim path = Request.FilePath
End Code

Page nesnenin özelliklerini kullanarak çok fazla bilgi alabilirsiniz:You can use properties of the Page object to get a lot of information, such as:

  • Request.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.As you've already seen, this is a collection of information about the current request, including what type of browser made the request, the URL of the page, the user identity, etc.

  • Response.Response. Bu, sunucu kodunun çalışmayı tamamladığında tarayıcıya gönderilecek yanıt (sayfa) hakkındaki bilgilerin bir koleksiyonudur.This is a collection of information about the response (page) that will be sent to the browser when the server code has finished running. Örneğin, yanıta bilgi yazmak için bu özelliği kullanabilirsiniz.For example, you can use this property to write information into the response.

    @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)Collection objects (arrays and dictionaries)

Bir koleksiyon, bir veritabanından Customer nesneleri koleksiyonu gibi aynı türde bir nesne grubudur.A collection is a group of objects of the same type, such as a collection of Customer objects from a database. ASP.NET, Request.Files koleksiyonu gibi birçok yerleşik koleksiyon içerir.ASP.NET contains many built-in collections, like the Request.Files collection.

Genellikle koleksiyonlardaki verilerle çalışırsınız.You'll often work with data in collections. İki ortak koleksiyon türü dizi ve sözlüktür.Two common collection types are the array and the dictionary. 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:An array is useful when you want to store a collection of similar items but don't want to create a separate variable to hold each item:

<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.With arrays, you declare a specific data type, such as String, Integer, or DateTime. 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).To indicate that the variable can contain an array, you add parentheses to the variable name in the declaration (such as Dim myVar() As String). Bir dizideki öğelere konumlarını (Dizin) veya For Each ifadesini kullanarak erişebilirsiniz.You can access items in an array using their position (index) or by using the For Each statement. Dizi dizinleri sıfır tabanlıdır — , ilk öğe 0 ' dır, ikinci öğe ise 1 konumunda ve bu şekilde devam eder.Array indexes are zero-based — that is, the first item is at position 0, the second item is at position 1, and so on.

@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.You can determine the number of items in an array by getting its Length property. Dizideki belirli bir öğenin konumunu almak için (yani, diziyi aramak için) Array.IndexOf yöntemini kullanın.To get the position of a specific item in the array (that is, to search the array), use the Array.IndexOf method. 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.You can also do things like reverse the contents of an array (the Array.Reverse method) or sort the contents (the Array.Sort method).

Bir tarayıcıda görünen dize dizisi kodunun çıkışı:The output of the string array code displayed in a browser:

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:A dictionary is a collection of key/value pairs, where you provide the key (or name) to set or retrieve the corresponding value:

@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.To create a dictionary, you use the New keyword to indicate that you're creating a new Dictionary object. Dim anahtar sözcüğünü kullanarak bir değişkene bir sözlük atayabilirsiniz.You can assign a dictionary to a variable using the Dim keyword. Parantez (( )) kullanarak Sözlükteki öğelerin veri türlerini gösterebilirsiniz.You indicate the data types of the items in the dictionary using parentheses ( ( ) ). Bildirimin sonunda, bu gerçekte yeni bir sözlük oluşturan bir yöntem olduğundan, başka bir parantez çifti eklemelisiniz.At the end of the declaration, you must add another pair of parentheses, because this is actually a method that creates a new dictionary.

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.To add items to the dictionary, you can call the Add method of the dictionary variable (myScores in this case), and then specify a key and a value. Alternatif olarak, aşağıdaki örnekte olduğu gibi anahtarı göstermek ve basit bir atama yapmak için parantezleri kullanabilirsiniz:Alternatively, you can use parentheses to indicate the key and do a simple assignment, as in the following example:

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

Sözlükten bir değer almak için anahtarı parantez içinde belirtirsiniz:To get a value from the dictionary, you specify the key in parentheses:

@myScores("test4")

Yöntemler parametrelerle çağırmaCalling Methods with Parameters

Bu makalede daha önce gördüğünüz gibi, ile programlayabilmeniz gereken nesneler yöntemlerine sahiptir.As you saw earlier in this article, the objects that you program with have methods. Örneğin, bir Database nesnesi bir Database.Connect yöntemine sahip olabilir.For example, a Database object might have a Database.Connect method. Birçok yöntemde de bir veya daha fazla parametre vardır.Many methods also have one or more parameters. Parametresi , bir yöntemine geçirdiğiniz bir değerdir ve bu yöntem, görevini tamamlamaya yönelik yöntemi etkinleştirir.A parameter is a value that you pass to a method to enable the method to complete its task. Örneğin, üç parametre alan Request.MapPath yöntemi için bir bildirime bakın:For example, look at a declaration for the Request.MapPath method, which takes three parameters:

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.This method returns the physical path on the server that corresponds to a specified virtual path. Yöntemi için üç parametre virtualPath, baseVirtualDirve allowCrossAppMapping.The three parameters for the method are virtualPath, baseVirtualDir, and 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.(Notice that in the declaration, the parameters are listed with the data types of the data that they'll accept.) When you call this method, you must supply values for all three parameters.

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.When you're using Visual Basic with the Razor syntax, you have two options for passing parameters to a method: positional parameters or named parameters. Konumsal parametreleri kullanarak bir yöntemi çağırmak için, parametreleri yöntem bildiriminde belirtilen katı bir sıraya geçirin.To call a method using positional parameters, you pass the parameters in a strict order that's specified in the method declaration. (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.(You would typically know this order by reading documentation for the method.) You must follow the order, and you can't skip any of the parameters — if necessary, you pass an empty string ("") or null for a positional parameter that you don't have a value for.

Aşağıdaki örnek, Web sitenizde betikler adında bir klasörünüz olduğunu varsayar.The following example assumes you have a folder named scripts on your website. Kod Request.MapPath yöntemini çağırır ve üç parametrenin değerlerini doğru sırada geçirir.The code calls the Request.MapPath method and passes values for the three parameters in the correct order. Ardından, sonuçta elde edilen eşleştirilmiş yolu görüntüler.It then displays the resulting mapped path.

@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.When there are many parameters for a method, you can keep your code cleaner and more readable by using named parameters. Adlandırılmış parametreleri kullanarak bir yöntemi çağırmak için, parametre adını ve ardından := belirtip değeri sağlayın.To call a method using named parameters, specify the parameter name followed by := and then provide the value. Adlandırılmış parametrelerin avantajı, bunları istediğiniz sırada ekleyebilmeniz.An advantage of named parameters is that you can add them in any order you want. (Bir dezavantajı yöntem çağrısının sıkışık olmaması.)(A disadvantage is that the method call is not as compact.)

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:The following example calls the same method as above, but uses named parameters to supply the values:

@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.As you can see, the parameters are passed in a different order. Ancak, önceki örneği çalıştırırsanız ve bu örnekte, aynı değer döndürülür.However, if you run the previous example and this example, they'll return the same value.

Hataları İşlemeHandling Errors

Try-catch deyimleriTry-Catch statements

Kodunuzda, denetiminizin dışındaki nedenlerle başarısız olabilecek deyimler vardır.You'll often have statements in your code that might fail for reasons outside your control. Örneğin:For example:

  • Kodunuz bir dosyayı açmaya, oluşturmaya, okumaya veya yazmaya çalışırsa, tüm hata sıralamaları meydana gelebilir.If your code tries to open, create, read, or write a file, all sorts of errors might occur. İstediğiniz dosya mevcut olmayabilir, kilitli olabilir, kod izinlere sahip olmayabilir ve bu şekilde devam eder.The file you want might not exist, it might be locked, the code might not have permissions, and so on.
  • 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.Similarly, if your code tries to update records in a database, there can be permissions issues, the connection to the database might be dropped, the data to save might be invalid, and so on.

Programlama koşullarında, bu durumlara özel durumlardenir.In programming terms, these situations are called exceptions. Kodunuz bir özel durumla karşılaşırsa, en iyi ve rahatsız edici kullanıcılara bir hata mesajı üretir (atar).If your code encounters an exception, it generates (throws) an error message that is, at best, annoying to users.

Razor-Img14

Kodunuzun özel durumlarla karşılaşmasına ve bu türden hata iletilerinden kaçınmak için Try/Catch deyimlerini kullanabilirsiniz.In situations where your code might encounter exceptions, and in order to avoid error messages of this type, you can use Try/Catch statements. Try bildiriminde, kontrol ettiğiniz kodu çalıştırırsınız.In the Try statement, you run the code that you're checking. Bir veya daha fazla Catch deyiminde, oluşmuş olabilecek belirli hatalara (özel durum türleri) bakabilirsiniz.In one or more Catch statements, you can look for specific errors (specific types of exceptions) that might have occurred. Benimsemeyi bekleme olduğunuz hatalara bakmak için gereken sayıda Catch deyimi ekleyebilirsiniz.You can include as many Catch statements as you need to look for errors that you're anticipating.

Note

Try/Catch deyimlerde Response.Redirect yöntemini kullanmaktan kaçınmanızı öneririz, çünkü sayfanızda bir özel duruma neden olabilir.We recommend that you avoid using the Response.Redirect method in Try/Catch statements, because it can cause an exception in your page.

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.The following example shows a page that creates a text file on the first request and then displays a button that lets the user open the file. Örnek, bir özel duruma neden olacak şekilde hatalı bir dosya adı kullanır.The example deliberately uses a bad file name so that it will cause an exception. 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.The code includes Catch statements for two possible exceptions: FileNotFoundException, which occurs if the file name is bad, and DirectoryNotFoundException, which occurs if ASP.NET can't even find the folder. (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.)(You can uncomment a statement in the example in order to see how it runs when everything works properly.)

Kodunuz özel durumu işlemediyse, önceki ekran görüntüsündeki gibi bir hata sayfası görürsünüz.If your code didn't handle the exception, you would see an error page like the previous screen shot. Ancak, Try/Catch bölümü kullanıcının bu hata türlerini görmesini önlemeye yardımcı olur.However, the Try/Catch section helps prevent the user from seeing these types of errors.

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

Başvuru BelgeleriReference Documentation