Bagikan melalui


Mengakses Data Model Anda dari Pengontrol (C#)

oleh Rick Anderson

Catatan

Versi terbaru dari tutorial ini tersedia di sini yang menggunakan ASP.NET MVC 5 dan Visual Studio 2013. Lebih aman, jauh lebih mudah untuk diikuti dan menunjukkan lebih banyak fitur.

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 C# tersedia untuk menyertai topik ini. Unduh versi C#. Jika Anda lebih suka Visual Basic, beralihlah ke versi Visual Basic 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.)

TambahkanScaffoldedMovieController

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

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

NewMovieControllerScreenShot

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 jendela browser Aplikasi Film M V C di halaman Daftar Film Saya.

Membuat Film

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

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

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.cs dan periksa metode yang dihasilkanIndex. Sebagian pengontrol film dengan metode ditunjukkan Index di bawah ini.

public class MoviesController : Controller
{
    private MovieDBContext db = new MovieDBContext();

    //
    // GET: /Movies/

    public ViewResult Index()
    {
        return View(db.Movies.ToList());
    }

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 MovieDBContext db = new MovieDBContext();

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

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:

public ViewResult Index()
{
    return View(db.Movies.ToList());
}

Dengan menyertakan @model 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.cshtml :

@model IEnumerable<MvcMovie.Models.Movie>

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

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Title)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ReleaseDate)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Genre)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Price)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
            @Html.ActionLink("Details", "Details", new { id=item.ID }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.ID })
        </td>
    </tr>
}

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:

ModelIntelliSense

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 SQL Server Compact 4.0(runtime + tools support). (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.