Bagikan melalui


Mengakses Data Model Anda dari Pengontrol (VB)

oleh Rick Anderson

Tutorial ini akan mengajari Anda dasar-dasar membangun aplikasi Web MVC ASP.NET menggunakan Microsoft Visual Web Developer 2010 Express Service Pack 1, yang merupakan versi gratis dari Microsoft Visual Studio. Sebelum memulai, pastikan Anda telah menginstal prasyarat yang tercantum di bawah ini. Anda dapat menginstal semuanya dengan mengklik tautan berikut: Penginstal Platform Web. Atau, Anda dapat menginstal prasyarat secara individual menggunakan tautan berikut:

Jika Anda menggunakan Visual Studio 2010 alih-alih Visual Web Developer 2010, instal prasyarat dengan mengklik tautan berikut: Prasyarat Visual Studio 2010.

Proyek Visual Web Developer dengan kode sumber VB.NET tersedia untuk menyertai topik ini. Unduh versi VB.NET. Jika Anda lebih suka C#, beralihlah ke versi C# dari tutorial ini.

Di bagian ini, Anda akan membuat kelas baru MoviesController dan menulis kode yang mengambil data film dan menampilkannya di browser menggunakan templat tampilan. Pastikan untuk membangun aplikasi Anda sebelum melanjutkan.

Klik kanan folder Pengontrol dan buat pengontrol baruMoviesController. Pilih opsi berikut:

  • Nama pengontrol: MoviesController. (Ini adalah default.)
  • Templat: Pengontrol dengan tindakan dan tampilan baca/tulis, menggunakan Kerangka Kerja Entitas.
  • Kelas model: Film (MvcMovie.Models).
  • Kelas konteks data: MovieDBContext (MvcMovie.Models).
  • Tampilan: Razor (CSHTML). (Default.)

5addMovieController

Klik Tambahkan. Visual Web Developer membuat file dan folder berikut:

  • File MoviesController.vb di folder Pengontrol proyek.
  • Folder Film di folder Tampilan proyek.
  • Create.vbhtml, Delete.vbhtml, Details.vbhtml, Edit.vbhtml, dan Index.vbhtml di folder Views\Movies baru.

5_ScaffoldMovie

Mekanisme perancah MVC 3 ASP.NET secara otomatis membuat metode dan tampilan tindakan CRUD (membuat, membaca, memperbarui, dan menghapus) untuk Anda. Anda sekarang memiliki aplikasi web yang berfungsi penuh yang memungkinkan Anda membuat, mencantumkan, mengedit, dan menghapus entri film.

Jalankan aplikasi dan telusuri pengontrol Movies dengan menambahkan /Movies ke URL di bilah alamat browser Anda. Karena aplikasi mengandalkan perutean default (ditentukan dalam file Global.asax), permintaan http://localhost:xxxxx/Movies browser dirutekan ke metode Movies tindakan default Index pengontrol. Dengan kata lain, permintaan http://localhost:xxxxx/Movies browser secara efektif sama dengan permintaan http://localhost:xxxxx/Movies/Indexbrowser . Hasilnya adalah daftar film kosong, karena Anda belum menambahkannya.

Cuplikan layar yang memperlihatkan halaman Daftar Film Saya di Aplikasi Film M V C.

Membuat Film

Pilih tautan Buat Baru . Masukkan beberapa detail tentang film lalu klik tombol Buat .

Cuplikan layar yang memperlihatkan halaman Buat di Aplikasi Film M V C.

Mengklik tombol Buat menyebabkan formulir diposting ke server, tempat informasi film disimpan dalam database. Anda kemudian dialihkan ke URL /Movies , tempat Anda dapat melihat film yang baru dibuat dalam daftar.

IndexWhenHarryMet

Buat beberapa entri film lagi. Coba tautan Edit, Detail, dan Hapus, yang semuanya berfungsi.

Memeriksa Kode yang Dihasilkan

Buka file Controllers\MoviesController.vb dan periksa metode yang dihasilkanIndex. Sebagian pengontrol film dengan metode ditunjukkan Index di bawah ini.

Public Class MoviesController
        Inherits System.Web.Mvc.Controller

        Private db As MovieDBContext = New MovieDBContext

        '
        ' GET: /Movies/

        Function Index() As ViewResult
            Return View(db.Movies.ToList())
        End Function

Baris berikut dari MoviesController kelas membuat instans konteks database film, seperti yang dijelaskan sebelumnya. Anda bisa menggunakan konteks database film untuk mengkueri, mengedit, dan menghapus film.

Private db As MovieDBContext = New MovieDBContex

Permintaan ke Movies pengontrol mengembalikan semua entri dalam Movies tabel database film lalu meneruskan hasilnya ke Index tampilan.

Model yang Di ketik dengan Kuat dan @model Kata Kunci

Sebelumnya dalam tutorial ini, Anda melihat bagaimana pengontrol dapat meneruskan data atau objek ke templat tampilan menggunakan ViewBag objek . ViewBag adalah objek dinamis yang menyediakan cara terikat terlambat yang nyaman untuk meneruskan informasi ke tampilan.

ASP.NET MVC juga menyediakan kemampuan untuk meneruskan data atau objek yang ditik dengan kuat ke templat tampilan. Pendekatan yang sangat ditik ini memungkinkan pemeriksaan waktu kompilasi yang lebih baik tentang kode Anda dan IntelliSense yang lebih kaya di editor Visual Web Developer. Kami menggunakan pendekatan ini dengan MoviesController kelas dan templat tampilan Index.vbhtml .

Perhatikan bagaimana kode membuat List objek saat memanggil metode pembantu View Index dalam metode tindakan. Kode kemudian meneruskan daftar ini Movies dari pengontrol ke tampilan:

Function Index() As ViewResult
            Return View(db.Movies.ToList())
       End Function

Dengan menyertakan @ModelType pernyataan di bagian atas file templat tampilan, Anda dapat menentukan jenis objek yang diharapkan tampilan. Saat Anda membuat pengontrol film, Visual Web Developer secara otomatis menyertakan pernyataan berikut @model di bagian atas file Index.vbhtml :

@ModelType IEnumerable(Of MvcMovie.Movie)

Direktif ini @ModelType memungkinkan Anda mengakses daftar film yang diteruskan pengontrol ke tampilan dengan menggunakan Model objek yang sangat diketik. Misalnya, dalam templat Index.vbhtml , kode mengulang melalui film dengan melakukan pernyataan atas objek yang foreach di ketik Model dengan kuat:

@For Each item In Model
    Dim currentItem = item
    @<tr>
        <td>
            @Html.DisplayFor(Function(modelItem) currentItem.Title)
        </td>
        <td>
            @Html.DisplayFor(Function(modelItem) currentItem.ReleaseDate)
        </td>
        <td>
            @Html.DisplayFor(Function(modelItem) currentItem.Genre)
        </td>
        <td>
            @Html.DisplayFor(Function(modelItem) currentItem.Price)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", New With {.id = currentItem.ID}) |
            @Html.ActionLink("Details", "Details", New With {.id = currentItem.ID}) |
            @Html.ActionLink("Delete", "Delete", New With {.id = currentItem.ID})
        </td>
    </tr>
Next

Model Karena objek sangat di ketik (sebagai IEnumerable<Movie> objek), setiap item objek dalam perulangan di ketik sebagai Movie. Di antara manfaat lainnya, ini berarti Anda mendapatkan pemeriksaan kode waktu kompilasi dan dukungan IntelliSense penuh di editor kode:

5_Intellisense

Bekerja dengan SQL Server Compact

Kode Kerangka Kerja Entitas Pertama-tama mendeteksi bahwa database string koneksi yang disediakan menunjuk ke Movies database yang belum ada, sehingga Kode Pertama membuat database secara otomatis. Anda dapat memverifikasi bahwa itu telah dibuat dengan melihat di folder App_Data . Jika Anda tidak melihat file Movies.sdf, klik tombol Perlihatkan Semua File di toolbar Penjelajah Solusi, klik tombol Refresh, lalu perluas folder App_Data.

SDF_in_SolnExp

Klik dua kali Movies.sdf untuk membuka Server Explorer. Kemudian perluas folder Tabel untuk melihat tabel yang telah dibuat dalam database.

Catatan

Jika Anda mendapatkan kesalahan saat mengklik dua kali Movies.sdf, pastikan Anda telah menginstal Alat Visual Studio 2010 SP1 untuk SQL Server Compact 4.0. (Untuk tautan ke perangkat lunak, lihat daftar prasyarat di bagian 1 dari seri tutorial ini.) Jika Anda menginstal rilis sekarang, Anda harus menutup dan membuka kembali Visual Web Developer.

DB_explorer

Ada dua tabel, satu untuk Movie kumpulan entitas dan kemudian EdmMetadata tabel. Tabel EdmMetadata digunakan oleh Kerangka Kerja Entitas untuk menentukan kapan model dan database tidak sinkron.

Movies Klik kanan tabel dan pilih Perlihatkan Data Tabel untuk melihat data yang Anda buat.

MoviesTable

Movies Klik kanan tabel dan pilih Edit Skema Tabel.

EditTableSchema

TableSchemaSM

Perhatikan bagaimana skema Movies tabel dipetakan ke kelas yang Movie Anda buat sebelumnya. Kode Kerangka Kerja Entitas Pertama secara otomatis membuat skema ini untuk Anda berdasarkan kelas Anda Movie .

Setelah selesai, tutup koneksi. (Jika Anda tidak menutup koneksi, Anda mungkin mendapatkan kesalahan saat menjalankan proyek lain kali).

CloseConnection

Anda sekarang memiliki database dan halaman daftar sederhana untuk menampilkan konten dari database tersebut. Dalam tutorial berikutnya, kita akan memeriksa sisa kode perancah dan menambahkan SearchIndex metode dan SearchIndex tampilan yang memungkinkan Anda mencari film dalam database ini.