Multiple Model pada ASP.NET MVC

[A]sp.Net MVC tidak memungkinkan bagi kita untuk mengirim lebih dari satu model dari controller ke view. Akan tetapi, bukan berarti kita tidak bisa menampilkan multiple model di dalam razor. Ada beberapa workaround yang bisa dilakukan untuk mencapainya.

MVC Multiple Model

Misalkan kita memiliki dua buah kelas model, Buku dan Artikel

Kita menginginkan supaya kedua model di atas bisa ditampilkan secara bersamaan pada sebuah halaman view seperti di bawah ini.

MVC Mulitple Model

Untuk mencapai tujuan di atas sebenarnya ada banyak cara, setidaknya ada 4 cara yang saya tahu. Namun yang saya tulis hanyalah salah satu cara yang saya lihat paling banyak digunakan.

Untuk menampilkan dua buah model yang berbeda pada sebuah halaman view kita bisa menggunakan sebuah view model. Sesuai namanya, view model adalah model yang ditujukan untuk digunakan pada view saja, tidak digunakan sebagai entity yang mewakili tabel database.

Berikut ini kodenya

Model ini digunakan untuk membungkus model Buku dan juga Artikel sehingga keduanya bisa diakses secara bersamaan di view.

Kode di bawah ini akan menjelaskan segalanya.

Di view kita bisa mengakses Artikel dan Buku seperti ditunjukkan kode di bawah

Semoga membantu 🙂

Facebook Comments
 

Agung Setiawan

Agung Setiawan adalah software engineer di BukaLapak.com, penulis sekaligus pecinta sastra, dan pembaca buku

 
Halo, perkenalkan saya Agung Setiawan.
Saya Software Engineer di BukaLapak.
Simak pemikian saya soal dunia Software Engineering via Twitter di @agungsetiawanmu dan facebook
Blog ini saya update seminggu sekali jadi sering-sering saja mampir
Mau belajar Vim bareng saya?
Belajar ngoding dari nol menggunakan PHP

One thought on “Multiple Model pada ASP.NET MVC

  1. Akhirnya saya nemuin tulisan2 ASP.NET MVC berbahasa Indonesia dan struktur bahasanya sangat mudah saya pahami.

    Oh iya, saat ini saya belum pernah mencoba lebih dari 1 class di model. Nanti akan saya coba deh, kayaknya bisa bikin lebih irit model dan controller.

Leave a Reply

Your email address will not be published. Required fields are marked *