Pengantar Pemrograman Web ASP.NET Menggunakan Sintaks Razor (C#)

oleh Tom FitzMacken

Artikel ini memberi Anda gambaran umum tentang pemrograman dengan ASP.NET Web Pages menggunakan sintaks Razor. ASP.NET adalah teknologi Microsoft untuk menjalankan halaman web dinamis di server web. Artikel ini berfokus pada penggunaan bahasa pemrograman C#.

Apa yang akan Anda pelajari:

  • 8 tips pemrograman teratas untuk memulai pemrograman ASP.NET Web Pages menggunakan sintaks Razor.
  • Konsep pemrograman dasar yang Anda butuhkan.
  • Tentang apa ASP.NET kode server dan sintaks Razor.

Versi perangkat lunak

  • Halaman Web ASP.NET (Razor) 3

Tutorial ini juga berfungsi dengan ASP.NET Web Pages 2.

8 Tips Pemrograman Teratas

Bagian ini mencantumkan beberapa tips yang benar-benar perlu Anda ketahui saat Anda mulai menulis kode server ASP.NET menggunakan sintaks Razor.

Catatan

Sintaks Razor didasarkan pada bahasa pemrograman C#, dan itulah bahasa yang paling sering digunakan dengan ASP.NET Web Pages. Namun, sintaks Razor juga mendukung bahasa Visual Basic, dan semua yang Anda lihat juga dapat Anda lakukan di Visual Basic. Untuk detailnya, lihat lampiran Visual Basic Language and Syntax.

Anda dapat menemukan detail selengkapnya tentang sebagian besar teknik pemrograman ini nanti di artikel.

1. Anda menambahkan kode ke halaman menggunakan karakter @

Karakter @ memulai ekspresi sebaris, blok pernyataan tunggal, dan blok multi-pernyataan:

<!-- Single statement blocks  -->
@{ var total = 7; }
@{ var myMessage = "Hello World"; }

<!-- Inline expressions -->
<p>The value of your account is: @total </p>
<p>The value of myMessage is: @myMessage</p>

<!-- Multi-statement block -->
@{
    var greeting = "Welcome to our site!";
    var weekDay = DateTime.Now.DayOfWeek;
    var greetingMessage = greeting + " Today is: " + weekDay;
}
<p>The greeting is: @greetingMessage</p>

Seperti inilah tampilan pernyataan ini ketika halaman berjalan di browser:

Razor-Img1

Tip

Pengodean HTML

Saat Anda menampilkan konten di halaman menggunakan @ karakter , seperti dalam contoh sebelumnya, ASP.NET HTML mengodekan output. Ini menggantikan karakter HTML yang dipesan (seperti < dan > ) &dengan kode yang memungkinkan karakter ditampilkan sebagai karakter di halaman web alih-alih ditafsirkan sebagai tag atau entitas HTML. Tanpa pengodean HTML, output dari kode server Anda mungkin tidak ditampilkan dengan benar, dan dapat mengekspos halaman ke risiko keamanan.

Jika tujuan Anda adalah mengeluarkan markup HTML yang merender tag sebagai markup (misalnya <p></p> untuk paragraf atau <em></em> untuk menekankan teks), lihat bagian Menggabungkan Teks, Markup, dan Kode di Blok Kode nanti di artikel ini.

Anda dapat membaca selengkapnya tentang pengodean HTML di Bekerja dengan Formulir.

2. Anda mengapit blok kode dalam kurung kurawal

Blok kode mencakup satu atau beberapa pernyataan kode dan diapit kurung kurawal.

<!-- Single statement block.  -->
@{ var theMonth = DateTime.Now.Month; }
<p>The numeric value of the current month: @theMonth</p>

<!-- Multi-statement block. -->
@{
    var outsideTemp = 79;
    var weatherMessage = "Hello, it is " + outsideTemp + " degrees.";
}
<p>Today's weather: @weatherMessage</p>

Hasil yang ditampilkan di browser:

Razor-Img2

3. Di dalam blok, Anda mengakhiri setiap pernyataan kode dengan titik koma

Di dalam blok kode, setiap pernyataan kode lengkap harus berakhir dengan titik koma. Ekspresi sebaris tidak berakhir dengan titik koma.

<!-- Single-statement block -->
@{ var theMonth = DateTime.Now.Month; }

<!-- Multi-statement block -->
@{
    var outsideTemp = 79;
    var weatherMessage = "Hello, it is " + outsideTemp + " degrees.";
}

<!-- Inline expression, so no semicolon -->
<p>Today's weather: @weatherMessage</p>

4. Anda menggunakan variabel untuk menyimpan nilai

Anda dapat menyimpan nilai dalam variabel, termasuk string, angka, dan tanggal, dll. Anda membuat variabel baru menggunakan var kata kunci . Anda dapat menyisipkan nilai variabel langsung di halaman menggunakan @.

<!-- Storing a string -->
@{ var welcomeMessage = "Welcome, new members!"; }
<p>@welcomeMessage</p>

<!-- Storing a date -->
@{ var year = DateTime.Now.Year; }

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

Hasil yang ditampilkan di browser:

Razor-Img3

5. Anda mengapit nilai string literal dalam tanda kutip ganda

String adalah urutan karakter yang diperlakukan sebagai teks. Untuk menentukan string, Anda mengapitnya dalam tanda kutip ganda:

@{ var myString = "This is a string literal"; }

Jika string yang ingin Anda tampilkan berisi karakter garis miring terbalik ( \ ) atau tanda kutip ganda ( " ), gunakan literal string verbatim yang diawali dengan @ operator. (Dalam C#, karakter \ memiliki arti khusus kecuali Anda menggunakan string verbatim literal.)

<!-- Embedding a backslash in a string -->
@{ var myFilePath = @"C:\MyFolder\"; }
<p>The path is: @myFilePath</p>

Untuk menyematkan tanda kutip ganda, gunakan literal string verbatim dan ulangi tanda kutip:

<!-- Embedding double quotation marks in a string -->
@{ var myQuote = @"The person said: ""Hello, today is Monday."""; }
<p>@myQuote</p>

Berikut adalah hasil penggunaan kedua contoh ini di halaman:

Razor-Img4

Catatan

Perhatikan bahwa @ karakter digunakan baik untuk menandai literal string verbatim di C# dan untuk menandai kode di halaman ASP.NET.

6. Kode peka huruf besar/kecil

Di C#, kata kunci (seperti var, , truedan if) dan nama variabel peka huruf besar/kecil. Baris kode berikut membuat dua variabel yang berbeda, lastName dan LastName.

@{
    var lastName = "Smith";
    var LastName = "Jones";
}

Jika Anda mendeklarasikan variabel sebagai var lastName = "Smith"; dan mencoba mereferensikan variabel tersebut di halaman Anda sebagai @LastName, Anda akan mendapatkan nilai "Jones" alih-alih "Smith".

Catatan

Di Visual Basic, kata kunci dan variabel tidak peka huruf besar/kecil.

7. Sebagian besar pengkodian Anda melibatkan objek

Objek mewakili hal yang dapat Anda programkan — halaman, kotak teks, file, gambar, permintaan web, pesan email, catatan pelanggan (baris database), dll. Objek memiliki properti yang menjelaskan karakteristiknya dan bahwa Anda dapat membaca atau mengubah — objek kotak teks memiliki Text properti (antara lain), objek permintaan memiliki Url properti, pesan email memiliki From properti , dan objek pelanggan memiliki FirstName properti . Objek juga memiliki metode yang merupakan "kata kerja" yang dapat mereka lakukan. Contohnya termasuk metode objek Save file, metode objek Rotate gambar, dan metode objek Send email.

Anda akan sering bekerja dengan Request objek , yang memberi Anda informasi seperti nilai kotak teks (bidang formulir) di halaman, jenis browser apa yang membuat permintaan, URL halaman, identitas pengguna, dll. Contoh berikut menunjukkan cara mengakses properti Request objek dan cara memanggil MapPath metode Request objek , yang memberi Anda jalur absolut halaman di 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>

Hasil yang ditampilkan di browser:

Razor-Img5

8. Anda dapat menulis kode yang membuat keputusan

Fitur utama halaman web dinamis adalah Anda dapat menentukan apa yang harus dilakukan berdasarkan kondisi. Cara paling umum untuk melakukan ini adalah dengan if pernyataan (dan pernyataan opsional else ).

@{
   var result = "";
   if(IsPost)
   {
      result = "This page was posted using the Submit button.";
   }
   else
   {
      result = "This was the first request for this page.";
   }
}

<!DOCTYPE html>
<html>
    <head>
        <title></title>
    </head>
<body>
<form method="POST" action="" >
  <input type="Submit" name="Submit" value="Submit"/>
  <p>@result</p>
</form>
</body>
</html>

Pernyataan if(IsPost) tersebut adalah cara singkat menulis if(IsPost == true). Seiring dengan if pernyataan, ada berbagai cara untuk menguji kondisi, blok kode berulang, dan sebagainya, yang dijelaskan nanti dalam artikel ini.

Hasilnya ditampilkan di browser (setelah mengklik Kirim):

Razor-Img6

Tip

Metode HTTP GET dan POST dan Properti IsPost

Protokol yang digunakan untuk halaman web (HTTP) mendukung jumlah metode (kata kerja) yang sangat terbatas yang digunakan untuk membuat permintaan ke server. Dua yang paling umum adalah GET, yang digunakan untuk membaca halaman, dan POST, yang digunakan untuk mengirimkan halaman. Secara umum, pertama kali pengguna meminta halaman, halaman diminta menggunakan GET. Jika pengguna mengisi formulir lalu mengklik tombol kirim, browser membuat permintaan POST ke server.

Dalam pemrograman web, sering kali berguna untuk mengetahui apakah halaman diminta sebagai GET atau sebagai POST sehingga Anda tahu cara memproses halaman. Di halaman web ASP.NET, Anda dapat menggunakan IsPost properti untuk melihat apakah permintaan adalah GET atau POST. Jika permintaan adalah POST, IsPost properti akan mengembalikan true, dan Anda dapat melakukan hal-hal seperti membaca nilai kotak teks pada formulir. Banyak contoh yang akan Anda lihat menunjukkan kepada Anda cara memproses halaman secara berbeda tergantung pada nilai IsPost.

Contoh kode sederhana

Prosedur ini menunjukkan kepada Anda cara membuat halaman yang menggambarkan teknik pemrograman dasar. Dalam contoh, Anda membuat halaman yang memungkinkan pengguna memasukkan dua angka, lalu menambahkannya dan menampilkan hasilnya.

  1. Di editor Anda, buat file baru dan beri nama AddNumbers.cshtml.

  2. Salin kode dan markup berikut ke halaman, menggantikan apa pun yang sudah ada di halaman.

    @{
        var total = 0;
        var totalMessage = "";
        if(IsPost) {
    
            // Retrieve the numbers that the user entered.
            var num1 = Request["text1"];
            var num2 = Request["text2"];
    
            // Convert the entered strings into integers numbers and add.
            total = num1.AsInt() + num2.AsInt();
            totalMessage = "Total = " + total;
        }
    }
    
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <title>Add Numbers</title>
        <meta charset="utf-8" />
        <style type="text/css">
          body {background-color: beige; font-family: Verdana, Arial;
                margin: 50px; }
          form {padding: 10px; border-style: solid; width: 250px;}
        </style>
      </head>
    <body>
      <p>Enter two whole numbers and then click <strong>Add</strong>.</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>
    

    Berikut adalah beberapa hal yang perlu Anda catat:

    • Karakter @ memulai blok kode pertama di halaman, dan mendahului totalMessage variabel yang disematkan di dekat bagian bawah halaman.
    • Blok di bagian atas halaman diapit kurung kurawal.
    • Di blok di bagian atas, semua baris berakhir dengan titik koma.
    • Variabel total, num1, num2, dan totalMessage menyimpan beberapa angka dan string.
    • Nilai string harfiah yang ditetapkan ke totalMessage variabel berada dalam tanda kutip ganda.
    • Karena kode peka huruf besar/kecil, ketika totalMessage variabel digunakan di dekat bagian bawah halaman, namanya harus cocok dengan variabel di bagian atas persis.
    • Ekspresi num1.AsInt() + num2.AsInt() menunjukkan cara bekerja dengan objek dan metode. Metode AsInt pada setiap variabel mengonversi string yang dimasukkan oleh pengguna menjadi angka (bilangan bulat) sehingga Anda dapat melakukan aritmatika di atasnya.
    • Tag <form> menyertakan method="post" atribut . Ini menentukan bahwa ketika pengguna mengklik Tambahkan, halaman akan dikirim ke server menggunakan metode HTTP POST. Saat halaman dikirimkan, if(IsPost) pengujian mengevaluasi ke true dan kode bersyariah berjalan, menampilkan hasil penambahan angka.
  3. Simpan halaman dan jalankan di browser. (Pastikan halaman dipilih di ruang kerja File sebelum Anda menjalankannya.) Masukkan dua bilangan bujur, lalu klik tombol Tambahkan .

    Razor-Img7

Konsep Pemrograman Dasar

Artikel ini memberi Anda gambaran umum tentang pemrograman web ASP.NET. Ini bukan pemeriksaan lengkap, hanya tur cepat melalui konsep pemrograman yang paling sering Anda gunakan. Meskipun demikian, ini mencakup hampir semua yang Anda perlukan untuk memulai ASP.NET Halaman Web.

Tapi pertama-tama, sedikit latar belakang teknis.

Sintaks Razor, Kode Server, dan ASP.NET

Sintaks razor adalah sintaks pemrograman sederhana untuk menyematkan kode berbasis server di halaman web. Di halaman web yang menggunakan sintaks Razor, ada dua jenis konten: konten klien dan kode server. Konten klien adalah hal-hal yang biasa Anda gunakan di halaman web: markup HTML (elemen), informasi gaya seperti CSS, mungkin beberapa skrip klien seperti JavaScript, dan teks biasa.

Sintaks Razor memungkinkan Anda menambahkan kode server ke konten klien ini. Jika ada kode server di halaman, server menjalankan kode tersebut terlebih dahulu, sebelum mengirim halaman ke browser. Dengan berjalan di server, kode dapat melakukan tugas yang bisa jauh lebih kompleks untuk dilakukan menggunakan konten klien saja, seperti mengakses database berbasis server. Yang paling penting, kode server dapat secara dinamis membuat konten klien — dapat menghasilkan markup HTML atau konten lain dengan cepat dan kemudian mengirimkannya ke browser bersama dengan HTML statis apa pun yang mungkin dimuat halaman. Dari perspektif browser, konten klien yang dihasilkan oleh kode server Anda tidak berbeda dari konten klien lainnya. Seperti yang telah Anda lihat, kode server yang diperlukan cukup sederhana.

ASP.NET halaman web yang menyertakan sintaks Razor memiliki ekstensi file khusus (.cshtml atau .vbhtml). Server mengenali ekstensi ini, menjalankan kode yang ditandai dengan sintaks Razor, lalu mengirim halaman ke browser.

Di mana ASP.NET cocok?

Sintaks Razor didasarkan pada teknologi dari Microsoft yang disebut ASP.NET, yang pada gilirannya didasarkan pada .NET Framework Microsoft. The.NET Framework adalah kerangka kerja pemrograman besar dan komprehensif dari Microsoft untuk mengembangkan hampir semua jenis aplikasi komputer. ASP.NET adalah bagian dari .NET Framework yang dirancang khusus untuk membuat aplikasi web. Pengembang telah menggunakan ASP.NET untuk membuat banyak situs web lalu lintas terbesar dan tertinggi di dunia. (Setiap kali Anda melihat ekstensi nama file .aspx sebagai bagian dari URL di situs, Anda akan tahu bahwa situs ditulis menggunakan ASP.NET.)

Sintaks Razor memberi Anda semua kekuatan ASP.NET, tetapi menggunakan sintaks yang disederhanakan yang lebih mudah dipelajari jika Anda seorang pemula dan itu membuat Anda lebih produktif jika Anda seorang ahli. Meskipun sintaks ini mudah digunakan, hubungan keluarganya dengan ASP.NET dan .NET Framework berarti bahwa ketika situs web Anda menjadi lebih canggih, Anda memiliki kekuatan kerangka kerja yang lebih besar yang tersedia untuk Anda.

Razor-Img8

Tip

Kelas dan Instans

ASP.NET kode server menggunakan objek, yang pada gilirannya dibangun berdasarkan gagasan kelas. Kelas adalah definisi atau templat untuk objek. Misalnya, aplikasi mungkin berisi Customer kelas yang menentukan properti dan metode yang dibutuhkan objek pelanggan apa pun.

Ketika aplikasi perlu bekerja dengan informasi pelanggan yang sebenarnya, aplikasi membuat instans (atau membuat instans) objek pelanggan. Setiap pelanggan individu adalah instans terpisah dari Customer kelas . Setiap instans mendukung properti dan metode yang sama, tetapi nilai properti untuk setiap instans biasanya berbeda, karena setiap objek pelanggan unik. Dalam satu objek pelanggan, LastName properti mungkin "Smith"; di objek pelanggan lain, LastName properti mungkin adalah "Jones."

Demikian pula, setiap halaman web individual di situs Anda adalah Page objek yang merupakan contoh Page kelas. Tombol di halaman adalah Button objek yang merupakan instans Button kelas, dan sebagainya. Setiap instans memiliki karakteristiknya sendiri, tetapi semuanya didasarkan pada apa yang ditentukan dalam definisi kelas objek.

Sintaks dasar

Sebelumnya Anda melihat contoh dasar cara membuat halaman Halaman Web ASP.NET, dan bagaimana Anda dapat menambahkan kode server ke markup HTML. Di sini Anda akan mempelajari dasar-dasar penulisan kode server ASP.NET menggunakan sintaks Razor — yaitu, aturan bahasa pemrograman.

Jika Anda berpengalaman dengan pemrograman (terutama jika Anda telah menggunakan C, C++, C#, Visual Basic, atau JavaScript), banyak dari apa yang Anda baca di sini akan akrab. Anda mungkin perlu membiasakan diri hanya dengan bagaimana kode server ditambahkan ke markup dalam file .cshtml .

Menggabungkan Teks, Markup, dan Kode dalam Blok Kode

Dalam blok kode server, Anda sering ingin menghasilkan teks atau markup (atau keduanya) ke halaman. Jika blok kode server berisi teks yang bukan kode dan sebaliknya harus dirender apa adanya, ASP.NET harus dapat membedakan teks tersebut dari kode. Ada beberapa cara untuk melakukan ini.

  • Sertakan teks dalam elemen HTML seperti <p></p> atau <em></em>:

    @if(IsPost) {
        // 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: <br /> </p>  @DateTime.Now
    }
    

    Elemen HTML dapat menyertakan teks, elemen HTML tambahan, dan ekspresi kode server. Ketika ASP.NET melihat tag HTML pembuka (misalnya, <p>), tag tersebut merender semuanya termasuk elemen dan kontennya apa adanya ke browser, menyelesaikan ekspresi kode server saat berjalan.

  • @: Gunakan operator atau <text> elemen . Menghasilkan @: satu baris konten yang berisi teks biasa atau tag HTML yang tidak cocok; <text> elemen mencakup beberapa baris ke output. Opsi ini berguna ketika Anda tidak ingin merender elemen HTML sebagai bagian dari output.

    @if(IsPost) {
        // Plain text followed by an unmatched HTML tag and server code.
        @: The time is: <br /> @DateTime.Now
        <br/>
        // Server code and then plain text, matched tags, and more text.
        @DateTime.Now @:is the <em>current</em> time.
    }
    

    Jika Anda ingin menghasilkan beberapa baris teks atau tag HTML yang tidak cocok, Anda dapat mendahului setiap baris dengan @:, atau Anda dapat mengapit baris dalam <text> elemen. @: Seperti operator,<text> tag digunakan oleh ASP.NET untuk mengidentifikasi konten teks dan tidak pernah dirender dalam output halaman.

    @if(IsPost) {
        // Repeat the previous example, but use <text> tags.
        <text>
        The time is: <br /> @DateTime.Now
        <br/>
        @DateTime.Now is the <em>current</em> time.
        </text>
    }
    
    @{
        var minTemp = 75;
        <text>It is the month of @DateTime.Now.ToString("MMMM"), and
        it's a <em>great</em> day! <br /><p>You can go swimming if it's at
        least @minTemp degrees. </p></text>
    }
    

    Contoh pertama mengulangi contoh sebelumnya tetapi menggunakan sepasang <text> tag tunggal untuk mengapit teks yang akan dirender. Dalam contoh kedua, <text> tag dan </text> mengapit tiga baris, yang semuanya memiliki beberapa teks yang tidak kontainer dan tag HTML yang tidak cocok (<br />), bersama dengan kode server dan tag HTML yang cocok. Sekali lagi, Anda juga dapat mendahului setiap baris satu per @: satu dengan operator; cara apa pun berfungsi.

    Catatan

    Saat Anda mengeluarkan teks seperti yang ditunjukkan di bagian ini — menggunakan elemen HTML, @: operator, atau <text> elemen — ASP.NET tidak mengodekan html output. (Seperti disebutkan sebelumnya, ASP.NET mengodekan output ekspresi kode server dan blok kode server yang didahului oleh @, kecuali dalam kasus khusus yang dicatat di bagian ini.)

Whitespace

Spasi ekstra dalam pernyataan (dan di luar string literal) tidak memengaruhi pernyataan:

@{ var lastName =    "Smith"; }

Jeda baris dalam pernyataan tidak berpengaruh pada pernyataan, dan Anda dapat membungkus pernyataan untuk keterbacaan. Pernyataan berikut sama:

@{ var theName =
"Smith"; }

@{
    var
    personName
    =
    "Smith"
    ;
}

Namun, Anda tidak dapat membungkus garis di tengah string harfiah. Contoh berikut tidak berfungsi:

@{ var test = "This is a long
    string"; }  // Does not work!

Untuk menggabungkan string panjang yang dibungkus ke beberapa baris seperti kode di atas, ada dua opsi. Anda dapat menggunakan operator perangkaian (+), yang akan Anda lihat nanti di artikel ini. Anda juga dapat menggunakan @ karakter untuk membuat string verbatim literal, seperti yang Anda lihat sebelumnya di artikel ini. Anda dapat memecah literal string verbatim di seluruh baris:

@{ var longString = @"This is a
    long
    string";
}

Komentar Kode (dan Markup)

Komentar memungkinkan Anda meninggalkan catatan untuk diri Anda sendiri atau orang lain. Mereka juga memungkinkan Anda untuk menonaktifkan (mengomentari) bagian kode atau markup yang tidak ingin Anda jalankan tetapi ingin menyimpan di halaman Anda untuk saat ini.

Ada sintaks komentar yang berbeda untuk kode Razor dan untuk markup HTML. Seperti semua kode Razor, komentar Razor diproses (dan kemudian dihapus) di server sebelum halaman dikirim ke browser. Oleh karena itu, sintaks komentar Razor memungkinkan Anda memasukkan komentar ke dalam kode (atau bahkan ke markup) yang dapat Anda lihat saat mengedit file, tetapi pengguna tersebut tidak melihat, bahkan di sumber halaman.

Untuk ASP.NET komentar Razor, Anda memulai komentar dengan @* dan mengakhirinya dengan *@. Komentar dapat berada di satu baris atau beberapa baris:

@*  A one-line code comment. *@

@*
    This is a multiline code comment.
    It can continue for any number of lines.
*@

Berikut adalah komentar dalam blok kode:

@{
    @* This is a comment. *@
    var theVar = 17;
}

Berikut adalah blok kode yang sama, dengan baris kode yang dikomentari sehingga tidak akan berjalan:

@{
    @* This is a comment. *@
    @* var theVar = 17;  *@
}

Di dalam blok kode, sebagai alternatif untuk menggunakan sintaks komentar Razor, Anda dapat menggunakan sintaks komentar bahasa pemrograman yang Anda gunakan, seperti C#:

@{
    // This is a comment.
    var myVar = 17;
    /* This is a multi-line comment
    that uses C# commenting syntax. */
}

Dalam C#, komentar satu baris didahului oleh // karakter, dan komentar multibaris dimulai dengan /* dan diakhbungkan dengan */. (Seperti komentar Razor, komentar C# tidak dirender ke browser.)

Untuk markup, seperti yang mungkin Anda ketahui, Anda dapat membuat komentar HTML:

<!-- This is a comment.  -->

Komentar HTML dimulai dengan <!-- karakter dan diakhpuni dengan -->. Anda dapat menggunakan komentar HTML untuk mengelilingi tidak hanya teks, tetapi juga markup HTML apa pun yang mungkin ingin Anda simpan di halaman tetapi tidak ingin dirender. Komentar HTML ini akan menyembunyikan seluruh konten tag dan teks yang dikandungnya:

<!-- <p>This is my paragraph.</p>  -->

Tidak seperti komentar Razor, komentar HTML dirender ke halaman dan pengguna dapat melihatnya dengan melihat sumber halaman.

Razor memiliki batasan pada blok C#. Untuk informasi selengkapnya, lihat Variabel C# Bernama dan Blok Berlapis Menghasilkan Kode Rusak

Variabel

Variabel adalah objek bernama yang Anda gunakan untuk menyimpan data. Anda dapat memberi nama variabel apa pun, tetapi nama harus dimulai dengan karakter alfabet dan tidak boleh berisi spasi kosong atau karakter khusus.

Variabel dan Jenis Data

Variabel dapat memiliki jenis data tertentu, yang menunjukkan jenis data apa yang disimpan dalam variabel. Anda dapat memiliki variabel string yang menyimpan nilai string (seperti "Halo dunia"), variabel bilangan bulat yang menyimpan nilai bilangan bulat (seperti 3 atau 79), dan variabel tanggal yang menyimpan nilai tanggal dalam berbagai format (seperti 4/12/2012 atau Maret 2009). Dan ada banyak jenis data lain yang dapat Anda gunakan.

Namun, Anda umumnya tidak perlu menentukan jenis untuk variabel. Sebagian besar waktu, ASP.NET dapat mencari tahu jenis berdasarkan bagaimana data dalam variabel digunakan. (Terkadang Anda harus menentukan jenis; Anda akan melihat contoh di mana ini benar.)

Anda mendeklarasikan variabel menggunakan var kata kunci (jika Anda tidak ingin menentukan jenis) atau dengan menggunakan nama jenis :

@{
    // Assigning a string to a variable.
    var greeting = "Welcome!";

    // Assigning a number to a variable.
    var theCount = 3;

    // Assigning an expression to a variable.
    var monthlyTotal = theCount + 5;

    // Assigning a date value to a variable.
    var today = DateTime.Today;

    // Assigning the current page's URL to a variable.
    var myPath = this.Request.Url;

    // Declaring variables using explicit data types.
    string name = "Joe";
    int count = 5;
    DateTime tomorrow = DateTime.Now.AddDays(1);
}

Contoh berikut menunjukkan beberapa penggunaan umum variabel di halaman web:

@{
    // Embedding the value of a variable into HTML markup.
    <p>@greeting, friends!</p>

    // Using variables as part of an inline expression.
    <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>
}

Jika Anda menggabungkan contoh sebelumnya di halaman, Anda akan melihat ini ditampilkan di browser:

Razor-Img9

Mengonversi dan Menguji Jenis Data

Meskipun ASP.NET biasanya dapat menentukan jenis data secara otomatis, terkadang tidak bisa. Oleh karena itu, Anda mungkin perlu membantu ASP.NET dengan melakukan konversi eksplisit. Bahkan jika Anda tidak perlu mengonversi jenis, terkadang sangat membantu untuk menguji untuk melihat jenis data apa yang mungkin anda kerjakan.

Kasus yang paling umum adalah Anda harus mengonversi string ke jenis lain, seperti ke bilangan bulat atau tanggal. Contoh berikut menunjukkan kasus umum di mana Anda harus mengonversi string menjadi angka.

@{
    var total = 0;

    if(IsPost) {
        // Retrieve the numbers that the user entered.
        var num1 = Request["text1"];
        var num2 = Request["text2"];
        // Convert the entered strings into integers numbers and add.
        total = num1.AsInt() + num2.AsInt();
    }
}

Sebagai aturan, input pengguna datang kepada Anda sebagai string. Bahkan jika Anda telah meminta pengguna untuk memasukkan angka, dan bahkan jika mereka telah memasukkan digit, ketika input pengguna dikirimkan dan Anda membacanya dalam kode, data dalam format string. Oleh karena itu, Anda harus mengonversi string menjadi angka. Dalam contoh, jika Anda mencoba melakukan aritmatika pada nilai tanpa mengonversinya, hasil kesalahan berikut, karena ASP.NET tidak dapat menambahkan dua string:

Tidak dapat secara implisit mengonversi tipe 'string' menjadi 'int'.

Untuk mengonversi nilai menjadi bilangan bulat, Anda memanggil AsInt metode . Jika konversi berhasil, Anda kemudian dapat menambahkan angka.

Tabel berikut mencantumkan beberapa metode konversi dan pengujian umum untuk variabel.

Metode

Deskripsi

Contoh


AsInt(), IsInt()

Mengonversi string yang mewakili bilangan bulat (seperti "593") menjadi bilangan bulat.

var myIntNumber = 0;
var myStringNum = "539";
if(myStringNum.IsInt()==true){
    myIntNumber = myStringNum.AsInt();
}

AsBool(), IsBool()

Mengonversi string seperti "true" atau "false" menjadi jenis Boolean.

var myStringBool = "True";
var myVar = myStringBool.AsBool();

AsFloat(), IsFloat()

Mengonversi string yang memiliki nilai desimal seperti "1,3" atau "7,439" menjadi angka floating-point.

var myStringFloat = "41.432895";
var myFloatNum = myStringFloat.AsFloat();

AsDecimal(), IsDecimal()

Mengonversi string yang memiliki nilai desimal seperti "1,3" atau "7,439" menjadi angka desimal. (Dalam ASP.NET, angka desimal lebih tepat daripada angka floating-point.)

var myStringDec = "10317.425";
var myDecNum = myStringDec.AsDecimal();

AsDateTime(), IsDateTime()

Mengonversi string yang mewakili nilai tanggal dan waktu ke jenis ASP.NET DateTime .

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

ToString()

Mengonversi jenis data lainnya menjadi string.

int num1 = 17;
int num2 = 76;
// myString is set to 1776
string myString = num1.ToString() +
  num2.ToString();

Operator

Operator adalah kata kunci atau karakter yang memberi tahu ASP.NET jenis perintah apa yang harus dilakukan dalam ekspresi. Bahasa C# (dan sintaks Razor yang didasarkan padanya) mendukung banyak operator, tetapi Anda hanya perlu mengenali beberapa untuk memulai. Tabel berikut ini meringkas operator yang paling umum.

Operator

Deskripsi

Contoh


+ - * /

Operator matematika yang digunakan dalam ekspresi numerik.

@(5 + 13)
@{ var netWorth = 150000; }
@{ var newTotal = netWorth * 2; }
@(newTotal / 2)

=

Tugas. Menetapkan nilai di sisi kanan pernyataan ke objek di sisi kiri.

var age = 17;

==

Kesetaraan. Mengembalikan true jika nilainya sama. (Perhatikan perbedaan antara = operator dan == operator.)

var myNum = 15;
if (myNum == 15) {
    // Do something.
}

!=

Ketidaksetaraan. Mengembalikan true jika nilainya tidak sama.

var theNum = 13;
if (theNum != 15) {
    // Do something.
}

< > <= >=

Kurang dari, lebih besar dari, kurang dari atau sama, dan lebih besar dari atau sama.

if (2 < 3) {
    // Do something.
}
var currentCount = 12;
if(currentCount >= 12) {
    // Do something.
}

+

Perangkaian, yang digunakan untuk menggabungkan string. ASP.NET mengetahui perbedaan antara operator ini dan operator penambahan berdasarkan jenis data ekspresi.

// The displayed result is "abcdef".
@("abc" + "def")

+= -=

Operator kenaikan dan penurunan, yang menambahkan dan mengurangi 1 (masing-masing) dari variabel.

int theCount = 0;
theCount += 1; // Adds 1 to count

.

Dot. Digunakan untuk membedakan objek dan properti dan metodenya.

var myUrl = Request.Url;
var count = Request["Count"].AsInt();

()

Tanda Kurung. Digunakan untuk mengelompokkan ekspresi dan meneruskan parameter ke metode.

@(3 + 7)
@Request.MapPath(Request.FilePath);

[]

Kurung. Digunakan untuk mengakses nilai dalam array atau koleksi.

var income = Request["AnnualIncome"];

!

Tidak. Membalikkan true nilai ke false dan sebaliknya. Biasanya digunakan sebagai cara singkat untuk menguji false (yaitu, untuk tidak true).

bool taskCompleted = false;
// Processing.
if(!taskCompleted) {
    // Continue processing
}

&& ||

Logika AND dan OR, yang digunakan untuk menautkan kondisi bersama-sama.

bool myTaskCompleted = false;
int totalCount = 0;
// Processing.
if(!myTaskCompleted && totalCount < 12) {
    // Continue processing.
}

Bekerja dengan Jalur File dan Folder dalam Kode

Anda akan sering bekerja dengan jalur file dan folder dalam kode Anda. Berikut adalah contoh struktur folder fisik untuk situs web seperti yang mungkin muncul di komputer pengembangan Anda:

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

Berikut adalah beberapa detail penting tentang URL dan jalur:

  • URL dimulai dengan nama domain (http://www.example.com) atau nama server (http://localhost, http://mycomputer).
  • URL sesuai dengan jalur fisik di komputer host. Misalnya, http://myserver mungkin sesuai dengan folder C:\websites\mywebsite di server.
  • Jalur virtual singkat untuk mewakili jalur dalam kode tanpa harus menentukan jalur lengkap. Ini termasuk bagian URL yang mengikuti domain atau nama server. Saat menggunakan jalur virtual, Anda dapat memindahkan kode ke domain atau server yang berbeda tanpa harus memperbarui jalur.

Berikut adalah contoh untuk membantu Anda memahami perbedaannya:

URL Lengkap http://mycompanyserver/humanresources/CompanyPolicy.htm
Nama server mycompanyserver
Jalur virtual /humanresources/CompanyPolicy.htm
Jalur fisik C:\mywebsites\humanresources\CompanyPolicy.htm

Akar virtualnya adalah /, sama seperti akar drive C: Anda adalah . (Jalur folder virtual selalu menggunakan garis miring ke depan.) Jalur virtual folder tidak harus memiliki nama yang sama dengan folder fisik; itu bisa menjadi alias. (Pada server produksi, jalur virtual jarang cocok dengan jalur fisik yang tepat.)

Saat Anda bekerja dengan file dan folder dalam kode, terkadang Anda perlu mereferensikan jalur fisik dan terkadang jalur virtual, tergantung pada objek apa yang sedang Anda kerjakan. ASP.NET memberi Anda alat-alat ini untuk bekerja dengan jalur file dan folder dalam kode: Server.MapPath metode , dan ~ operator dan Href metode .

Mengonversi jalur virtual ke fisik: metode Server.MapPath

Metode mengonversi Server.MapPath jalur virtual (seperti /default.cshtml) ke jalur fisik absolut (seperti C:\WebSites\MyWebSiteFolder\default.cshtml). Anda menggunakan metode ini kapan saja Anda memerlukan jalur fisik yang lengkap. Contoh umumnya adalah saat Anda membaca atau menulis file teks atau file gambar di server web.

Anda biasanya tidak tahu jalur fisik absolut situs Anda di server situs hosting, sehingga metode ini dapat mengonversi jalur yang Anda ketahui - jalur virtual - ke jalur yang sesuai di server untuk Anda. Anda meneruskan jalur virtual ke file atau folder ke metode , dan mengembalikan jalur fisik:

@{
    var dataFilePath = "~/dataFile.txt";
}
<!-- Displays a physical path C:\Websites\MyWebSite\datafile.txt  -->
<p>@Server.MapPath(dataFilePath)</p>

Mereferensikan akar virtual: operator ~ dan metode Href

Dalam file .cshtml atau .vbhtml , Anda dapat mereferensikan jalur akar virtual menggunakan ~ operator . Ini sangat berguna karena Anda dapat memindahkan halaman di sekitar situs, dan tautan apa pun yang dikandungnya ke halaman lain tidak akan rusak. Ini juga berguna jika Anda pernah memindahkan situs web Anda ke lokasi yang berbeda. Berikut adalah beberapa contohnya:

@{
    var myImagesFolder = "~/images";
    var myStyleSheet = "~/styles/StyleSheet.css";
}

Jika situs web adalah http://myserver/myapp, berikut adalah bagaimana ASP.NET akan memperlakukan jalur ini ketika halaman berjalan:

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

(Anda tidak akan benar-benar melihat jalur ini sebagai nilai variabel, tetapi ASP.NET akan memperlakukan jalur seolah-olah itu yang mereka lakukan.)

Anda dapat menggunakan ~ operator baik dalam kode server (seperti di atas) maupun dalam markup, seperti ini:

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

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

Dalam markup, Anda menggunakan ~ operator untuk membuat jalur ke sumber daya seperti file gambar, halaman web lainnya, dan file CSS. Saat halaman berjalan, ASP.NET melihat melalui halaman (kode dan markup) dan menyelesaikan semua ~ referensi ke jalur yang sesuai.

Logika dan Perulangan Bersyarah

ASP.NET kode server memungkinkan Anda melakukan tugas berdasarkan kondisi dan menulis kode yang mengulangi pernyataan beberapa kali (yaitu, kode yang menjalankan perulangan).

Kondisi Pengujian

Untuk menguji kondisi sederhana, Anda menggunakan if pernyataan , yang mengembalikan true atau false berdasarkan pengujian yang Anda tentukan:

@{
  var showToday = true;
  if(showToday)
  {
    @DateTime.Today;
  }
}

Kata if kunci memulai blok. Pengujian aktual (kondisi) berada dalam tanda kurung dan mengembalikan true atau false. Pernyataan yang berjalan jika pengujian benar diapit kurung kurawal. Pernyataan if dapat menyertakan else blok yang menentukan pernyataan untuk dijalankan jika kondisinya salah:

@{
  var showToday = false;
  if(showToday)
  {
    @DateTime.Today;
  }
  else
  {
    <text>Sorry!</text>
  }
}

Anda dapat menambahkan beberapa kondisi menggunakan else if blok:

@{
    var theBalance = 4.99;
    if(theBalance == 0)
    {
        <p>You have a zero balance.</p>
    }
    else if (theBalance  > 0 && theBalance <= 5)
    {
        <p>Your balance of $@theBalance is very low.</p>
    }
    else
    {
        <p>Your balance is: $@theBalance</p>
    }
}

Dalam contoh ini, jika kondisi pertama dalam blok jika tidak benar, else if kondisi akan diperiksa. Jika kondisi tersebut terpenuhi, pernyataan dalam else if blok dijalankan. Jika tidak ada kondisi yang terpenuhi, pernyataan dalam else blok dijalankan. Anda dapat menambahkan sejumlah blok jika lain, lalu menutup dengan else blok sebagai kondisi "yang lainnya".

Untuk menguji sejumlah besar kondisi, gunakan switch blok:

@{
    var weekday = "Wednesday";
    var greeting = "";

    switch(weekday)
    {
        case "Monday":
            greeting = "Ok, it's a marvelous Monday";
            break;
        case "Tuesday":
            greeting = "It's a tremendous Tuesday";
            break;
        case "Wednesday":
            greeting = "Wild Wednesday is here!";
            break;
        default:
            greeting = "It's some other day, oh well.";
            break;
    }

    <p>Since it is @weekday, the message for today is: @greeting</p>
}

Nilai yang akan diuji ada dalam tanda kurung (dalam contoh, weekday variabel ). Setiap pengujian individu menggunakan case pernyataan yang diakhapi dengan titik dua (:). Jika nilai case pernyataan cocok dengan nilai pengujian, kode dalam hal ini blok dijalankan. Anda menutup setiap pernyataan kasus dengan break pernyataan . (Jika Anda lupa menyertakan jeda di setiap case blok, kode dari pernyataan berikutnya case juga akan berjalan.) switch Blok sering memiliki default pernyataan sebagai kasus terakhir untuk opsi "segala sesuatu yang lain" yang berjalan jika tidak ada kasus lain yang benar.

Hasil dari dua blok bersyar terakhir yang ditampilkan di browser:

Razor-Img10

Kode Perulangan

Anda sering kali perlu menjalankan pernyataan yang sama berulang kali. Anda melakukan ini dengan mengulang. Misalnya, Anda sering menjalankan pernyataan yang sama untuk setiap item dalam kumpulan data. Jika Anda tahu persis berapa kali Anda ingin mengulang, Anda dapat menggunakan perulangan for . Perulangan semacam ini sangat berguna untuk menghitung atau menghitung mundur:

@for(var i = 10; i < 21; i++)
{
    <p>Line #: @i</p>
}

Perulangan dimulai dengan for kata kunci , diikuti oleh tiga pernyataan dalam tanda kurung, masing-masing diakhiri dengan titik koma.

  • Di dalam tanda kurung, pernyataan pertama (var i=10;) membuat penghitung dan menginisialisasinya menjadi 10. Anda tidak perlu memberi nama penghitung i — Anda dapat menggunakan variabel apa pun. Ketika perulangan for berjalan, penghitung secara otomatis dinaikkan.
  • Pernyataan kedua (i < 21;) menetapkan kondisi seberapa jauh Anda ingin menghitung. Dalam hal ini, Anda ingin pergi ke maksimum 20 (yaitu, terus berjalan sementara penghitung kurang dari 21).
  • Pernyataan ketiga (i++ ) menggunakan operator penambahan, yang hanya menentukan bahwa penghitung harus memiliki 1 ditambahkan ke dalamnya setiap kali perulangan berjalan.

Di dalam kurung kurawal adalah kode yang akan berjalan untuk setiap iterasi perulangan. Markup membuat paragraf<p> (elemen) baru setiap kali dan menambahkan baris ke output, menampilkan nilai i (penghitung). Saat Anda menjalankan halaman ini, contoh membuat 11 baris yang menampilkan output, dengan teks di setiap baris yang menunjukkan nomor item.

Razor-Img11

Jika Anda bekerja dengan koleksi atau array, Anda sering menggunakan perulangan foreach . Koleksi adalah sekelompok objek serupa, dan perulangan foreach memungkinkan Anda melakukan tugas pada setiap item dalam koleksi. Jenis perulangan ini nyaman untuk koleksi, karena tidak seperti perulangan for , Anda tidak perlu menaikkan penghitung atau menetapkan batas. Sebaliknya, kode perulangan foreach hanya melanjutkan melalui koleksi sampai selesai.

Misalnya, kode berikut mengembalikan item dalam Request.ServerVariables koleksi, yang merupakan objek yang berisi informasi tentang server web Anda. Ini menggunakan perulangan foreac h untuk menampilkan nama setiap item dengan membuat elemen baru <li> dalam daftar berpoin HTML.

<ul>
@foreach (var myItem in Request.ServerVariables)
{
    <li>@myItem</li>
}
</ul>

Kata foreach kunci diikuti oleh tanda kurung tempat Anda mendeklarasikan variabel yang mewakili satu item dalam koleksi (dalam contoh, var item), diikuti dengan in kata kunci, diikuti dengan koleksi yang ingin Anda ulangi. Dalam isi perulangan foreach , Anda dapat mengakses item saat ini menggunakan variabel yang Anda deklarasikan sebelumnya.

Razor-Img12

Untuk membuat perulangan tujuan yang lebih umum, gunakan while pernyataan :

@{
    var countNum = 0;
    while (countNum < 50)
    {
        countNum += 1;
        <p>Line #@countNum: </p>
    }
}

Perulangan while dimulai dengan while kata kunci , diikuti oleh tanda kurung di mana Anda menentukan berapa lama perulangan berlanjut (di sini, selama countNum kurang dari 50), maka blok akan diulang. Perulangan biasanya bertambah (tambahkan ke) atau penurunan (kurangi dari) variabel atau objek yang digunakan untuk penghitungan. Dalam contoh, += operator menambahkan 1 ke countNum setiap kali perulangan berjalan. (Untuk mengurangi variabel dalam perulangan yang menghitung mundur, Anda akan menggunakan operator -=penurunan ).

Objek dan Koleksi

Hampir semua yang ada di situs web ASP.NET adalah objek, termasuk halaman web itu sendiri. Bagian ini membahas beberapa objek penting yang akan sering Anda kerjakan dalam kode Anda.

Objek Halaman

Objek paling dasar di ASP.NET adalah halaman. Anda dapat mengakses properti objek halaman secara langsung tanpa objek yang memenuhi syarat. Kode berikut mendapatkan jalur file halaman, menggunakan Request objek halaman:

@{
    var path = Request.FilePath;
}

Untuk memperjelas bahwa Anda mereferensikan properti dan metode pada objek halaman saat ini, Anda dapat secara opsional menggunakan kata kunci this untuk mewakili objek halaman dalam kode Anda. Berikut adalah contoh kode sebelumnya, dengan this ditambahkan untuk mewakili halaman:

@{
    var path = this.Request.FilePath;
}

Anda dapat menggunakan properti Page objek untuk mendapatkan banyak informasi, seperti:

  • Request. Seperti yang telah Anda lihat, ini adalah kumpulan informasi tentang permintaan saat ini, termasuk jenis browser apa yang membuat permintaan, URL halaman, identitas pengguna, dll.

  • Response. Ini adalah kumpulan informasi tentang respons (halaman) yang akan dikirim ke browser ketika kode server telah selesai berjalan. Misalnya, Anda dapat menggunakan properti ini untuk menulis informasi ke dalam respons.

    @{
        // Access the page's Request object to retrieve the Url.
        var pageUrl = this.Request.Url;
    }
    <a href="@pageUrl">My page</a>
    

Objek Koleksi (Array dan Kamus)

Koleksi adalah sekelompok objek dengan jenis yang sama, seperti kumpulan Customer objek dari database. ASP.NET berisi banyak koleksi bawaan, seperti Request.Files koleksi.

Anda akan sering bekerja dengan data dalam koleksi. Dua jenis koleksi umum adalah array dan kamus. Array berguna saat Anda ingin menyimpan koleksi item serupa tetapi tidak ingin membuat variabel terpisah untuk menahan setiap item:

@* Array block 1: Declaring a new array using braces. *@
@{
    <h3>Team Members</h3>
    string[] teamMembers = {"Matt", "Joanne", "Robert", "Nancy"};
    foreach (var person in teamMembers)
    {
        <p>@person</p>
    }
}

Dengan array, Anda mendeklarasikan jenis data tertentu, seperti string, , intatau DateTime. Untuk menunjukkan bahwa variabel dapat berisi array, Anda menambahkan tanda kurung ke deklarasi (seperti string[] atau int[]). Anda dapat mengakses item dalam array menggunakan posisinya (indeks) atau dengan menggunakan foreach pernyataan . Indeks array berbasis nol — yaitu, item pertama berada di posisi 0, item kedua berada di posisi 1, dan sebagainya.

@{
    string[] teamMembers = {"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>
    foreach (var name in teamMembers)
    {
        <p>@name</p>
    }
    <h3>Reversed order of team members in the list</h3>
    Array.Reverse(teamMembers);
    foreach (var reversedItem in teamMembers)
    {
        <p>@reversedItem</p>
    }
}

Anda dapat menentukan jumlah item dalam array dengan mendapatkan propertinya Length . Untuk mendapatkan posisi item tertentu dalam array (untuk mencari array), gunakan Array.IndexOf metode . Anda juga dapat melakukan hal-hal seperti membalikkan konten array ( Array.Reverse metode ) atau mengurutkan konten ( Array.Sort metode ).

Output kode array string yang ditampilkan di browser:

Razor-Img13

Kamus adalah kumpulan pasangan kunci/nilai, tempat Anda memberikan kunci (atau nama) untuk mengatur atau mengambil nilai yang sesuai:

@{
    var myScores = new Dictionary<string, int>();
    myScores.Add("test1", 71);
    myScores.Add("test2", 82);
    myScores.Add("test3", 100);
    myScores.Add("test4", 59);
}
<p>My score on test 3 is: @myScores["test3"]%</p>
@{myScores["test4"] = 79;}
<p>My corrected score on test 4 is: @myScores["test4"]%</p>

Untuk membuat kamus, Anda menggunakan new kata kunci untuk menunjukkan bahwa Anda membuat objek kamus baru. Anda dapat menetapkan kamus ke variabel menggunakan var kata kunci . Anda menunjukkan jenis data item dalam kamus menggunakan kurung sudut ( < > ). Di akhir deklarasi, Anda harus menambahkan sepasang tanda kurung, karena ini sebenarnya adalah metode yang membuat kamus baru.

Untuk menambahkan item ke kamus, Anda dapat memanggil Add metode variabel kamus (myScores dalam hal ini), lalu menentukan kunci dan nilai. Atau, Anda dapat menggunakan kurung siku untuk menunjukkan kunci dan melakukan penugasan sederhana, seperti dalam contoh berikut:

myScores["test4"] = 79;

Untuk mendapatkan nilai dari kamus, Anda menentukan kunci dalam tanda kurung:

var testScoreThree = myScores["test3"];

Metode Panggilan dengan Parameter

Seperti yang Anda baca sebelumnya dalam artikel ini, objek yang Anda programkan dapat memiliki metode. Misalnya, Database objek mungkin memiliki Database.Connect metode . Banyak metode juga memiliki satu atau beberapa parameter. Parameter adalah nilai yang Anda berikan ke metode untuk mengaktifkan metode untuk menyelesaikan tugasnya. Misalnya, lihat deklarasi untuk Request.MapPath metode , yang mengambil tiga parameter:

public string MapPath(string virtualPath, string baseVirtualDir, 
    bool allowCrossAppMapping);

(Baris telah dibungkus untuk membuatnya lebih mudah dibaca. Ingatlah bahwa Anda dapat menempatkan jeda baris hampir di mana saja kecuali di dalam string yang diapit tanda kutip.)

Metode ini mengembalikan jalur fisik di server yang sesuai dengan jalur virtual tertentu. Tiga parameter untuk metode ini adalah virtualPath, , baseVirtualDirdan allowCrossAppMapping. (Perhatikan bahwa dalam deklarasi, parameter dicantumkan dengan jenis data data yang akan mereka terima.) Ketika Anda memanggil metode ini, Anda harus menyediakan nilai untuk ketiga parameter.

Sintaks Razor memberi Anda dua opsi untuk meneruskan parameter ke metode: parameter posisi dan parameter bernama. Untuk memanggil metode menggunakan parameter posisi, Anda meneruskan parameter dalam urutan ketat yang ditentukan dalam deklarasi metode. (Anda biasanya akan mengetahui urutan ini dengan membaca dokumentasi untuk metode .) Anda harus mengikuti urutan, dan Anda tidak dapat melewati parameter apa pun — jika perlu, Anda meneruskan string kosong ("") atau null untuk parameter posisi yang tidak memiliki nilai.

Contoh berikut mengasumsikan Anda memiliki folder bernama skrip di situs web Anda. Kode memanggil Request.MapPath metode dan meneruskan nilai untuk tiga parameter dalam urutan yang benar. Kemudian menampilkan jalur yang dipetakan yang dihasilkan.

@{
    // Pass parameters to a method using positional parameters.
    var myPathPositional = Request.MapPath("/scripts", "/", true);
}
<p>@myPathPositional</p>

Ketika metode memiliki banyak parameter, Anda dapat menjaga kode Anda lebih mudah dibaca dengan menggunakan parameter bernama. Untuk memanggil metode menggunakan parameter bernama, Anda menentukan nama parameter diikuti dengan titik dua (:), lalu nilainya. Keuntungan dari parameter bernama adalah Anda dapat meneruskannya dalam urutan apa pun yang Anda inginkan. (Kerugiannya adalah bahwa panggilan metode tidak sepadat.)

Contoh berikut memanggil metode yang sama seperti di atas, tetapi menggunakan parameter bernama untuk menyediakan nilai:

@{
    // Pass parameters to a method using named parameters.
    var myPathNamed = Request.MapPath(baseVirtualDir: "/", 
        allowCrossAppMapping: true, virtualPath: "/scripts");
}
<p>@myPathNamed</p>

Seperti yang Anda lihat, parameter diteruskan dalam urutan yang berbeda. Namun, jika Anda menjalankan contoh sebelumnya dan contoh ini, mereka akan mengembalikan nilai yang sama.

Menangani Kesalahan

Pernyataan Try-Catch

Anda akan sering memiliki pernyataan dalam kode Anda yang mungkin gagal karena alasan di luar kontrol Anda. Contohnya:

  • Jika kode Anda mencoba membuat atau mengakses file, semua jenis kesalahan mungkin terjadi. File yang Anda inginkan mungkin tidak ada, mungkin dikunci, kode mungkin tidak memiliki izin, dan sebagainya.
  • Demikian pula, jika kode Anda mencoba memperbarui rekaman dalam database, mungkin ada masalah izin, koneksi ke database mungkin terputus, data yang akan disimpan mungkin tidak valid, dan sebagainya.

Dalam istilah pemrograman, situasi ini disebut pengecualian. Jika kode Anda menemukan pengecualian, kode akan menghasilkan (melempar) pesan kesalahan yang paling mengganggu pengguna:

Razor-Img14

Dalam situasi di mana kode Anda mungkin mengalami pengecualian, dan untuk menghindari pesan kesalahan jenis ini, Anda dapat menggunakan try/catch pernyataan. try Dalam pernyataan , Anda menjalankan kode yang Anda periksa. Dalam satu atau beberapa catch pernyataan, Anda dapat mencari kesalahan tertentu (jenis pengecualian tertentu) yang mungkin telah terjadi. Anda dapat menyertakan pernyataan sebanyak catch yang Anda butuhkan untuk mencari kesalahan yang Anda antisipasi.

Catatan

Kami menyarankan agar Anda menghindari penggunaan Response.Redirect metode dalam try/catch pernyataan, karena dapat menyebabkan pengecualian di halaman Anda.

Contoh berikut menunjukkan halaman yang membuat file teks pada permintaan pertama lalu menampilkan tombol yang memungkinkan pengguna membuka file. Contoh ini sengaja menggunakan nama file yang buruk sehingga akan menyebabkan pengecualian. Kode ini mencakup catch pernyataan untuk dua kemungkinan pengecualian: FileNotFoundException, yang terjadi jika nama file buruk, dan DirectoryNotFoundException, yang terjadi jika ASP.NET bahkan tidak dapat menemukan folder . (Anda dapat membatalkan komentar pernyataan dalam contoh untuk melihat bagaimana ia berjalan ketika semuanya berfungsi dengan baik.)

Jika kode Anda tidak menangani pengecualian, Anda akan melihat halaman kesalahan seperti cuplikan layar sebelumnya. Namun, bagian ini try/catch membantu mencegah pengguna melihat jenis kesalahan ini.

@{
    var dataFilePath = "~/dataFile.txt";
    var fileContents = "";
    var physicalPath = Server.MapPath(dataFilePath);
    var userMessage = "Hello world, the time is " + DateTime.Now;
    var userErrMsg = "";
    var errMsg = "";

    if(IsPost)
    {
        // When the user clicks the "Open File" button and posts
        // the page, try to open the created file for reading.
        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 (FileNotFoundException ex) {
            // You can use the exception object for debugging, logging, etc.
            errMsg = ex.Message;
            // Create a friendly error message for users.
            userErrMsg = "A file could not be opened, please contact "
                + "your system administrator.";
        }
        catch (DirectoryNotFoundException ex) {
            // Similar to previous exception.
            errMsg = ex.Message;
            userErrMsg = "A directory was not found, please contact "
                + "your system administrator.";
        }
    }
    else
    {
        // The first time the page is requested, create the text file.
        File.WriteAllText(physicalPath, userMessage);
    }
}

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

Sumber Daya Tambahan

Pemrograman dengan Visual Basic

Lampiran: Bahasa dan Sintaks Visual Basic

Dokumentasi Rujukan

ASP.NET

C# Language