Saya baru saja mempelajari asp.net MVC dan saya mencoba mencari cara untuk memindahkan pengontrol saya ke dalam proyek terpisah. Biasanya ketika saya telah mendesain aplikasi web asp.net sebelumnya, saya membuat satu proyek untuk model saya, satu lagi untuk logika saya, dan kemudian ada web.
Sekarang setelah saya belajar asp.net MVC, saya berharap untuk mengikuti pola yang sama dan menempatkan model dan pengontrol masing-masing ke dalam proyek mereka sendiri yang terpisah, dan biarkan tampilan / scripts / css di web. Bagian modelnya mudah, tetapi yang tidak saya mengerti adalah bagaimana membuat pengontrol saya dalam proyek terpisah dapat "ditemukan". Juga, saya ingin tahu apakah ini disarankan. Terima kasih!
sumber
Meskipun masuk akal untuk membuat ControllerFactory Anda sendiri, saya merasa lebih nyaman untuk menentukan semua Pengontrol saya di setiap proyek, tetapi memperolehnya dari Pengontrol di proyek Bersama saya:
Ini memiliki keuntungan tambahan yaitu Anda memiliki tempat untuk meletakkan logika Controller Anda yang berbeda dari proyek ke proyek. Selain itu, lebih mudah bagi pengembang lain untuk dengan cepat menemukan logika Pengontrol Anda karena Pengontrol ada di tempat standar.
Mengenai apakah ini disarankan, saya pikir memang demikian. Saya telah membuat beberapa logika Manajemen Akun umum yang ingin saya bagikan di antara proyek-proyek yang memiliki logika bisnis yang sangat berbeda. Jadi saya membagikan Akun dan Pengontrol Admin saya, tetapi Pengontrol lain dikhususkan untuk proyek masing-masing.
sumber
Di kelas tambahkan kode berikut (Untuk Kode Pengontrol u'r)
}
Pada folder tampilan proyek mvc tambahkan folder untuk Kontak dan buat file Call.cshtml.
Tambahkan referensi proyek perpustakaan kelas ke dalam proyek MVC utama Anda.
sumber
Masalah saya teratasi setelah saya memperbarui
System.Web.Mvc
referensi NuGet sehingga MvcWebsite dan Class Library menggunakanSystem.Web.Mvc
versi yang samaTidak perlu menambahkan ruang nama default
sumber
Bentuk pemisahan paling sederhana yang saya gunakan adalah mempertahankan Tampilan "sebagaimana adanya" dalam proyek MVC asli tetapi menghapus Pengontrol. Kemudian dalam proyek ClassLibrary baru tambahkan kelas Controller dan pastikan mereka mewarisi dari Controller.
Mesin perutean MVC akan secara otomatis merutekan ke Pengontrol di Perpustakaan Kelas dan Pengontrol akan secara otomatis membuat Tampilan dari proyek MVC asli, asalkan Anda memiliki referensi dan penggunaan yang benar.
Saya menggunakan arsitektur ini untuk mengimplementasikan modul Laporan Html yang dapat dikompilasi dan digunakan secara terpisah dari solusi utama. Akhirnya saya bebas dari SSRS!
sumber