Apa cara Anda mengirimkan data ke Halaman Master (menggunakan ASP.NET MVC) tanpa melanggar aturan MVC?
Secara pribadi, saya lebih suka kode pengontrol abstrak (pengontrol dasar) atau kelas dasar yang diteruskan ke semua tampilan.
c#
.net
asp.net
asp.net-mvc
Łukasz Sowa
sumber
sumber
Jawaban:
Jika Anda lebih suka tampilan Anda memiliki kelas data tampilan yang diketik dengan kuat, ini mungkin berhasil untuk Anda. Solusi lain mungkin lebih tepat tetapi ini adalah keseimbangan yang bagus antara desain dan kepraktisan IMHO.
Halaman master mengambil kelas data tampilan yang diketik dengan kuat yang hanya berisi informasi yang relevan dengannya:
Setiap tampilan yang menggunakan halaman master tersebut mengambil kelas data tampilan yang diketik dengan kuat yang berisi informasinya dan berasal dari data tampilan halaman master:
Karena saya tidak ingin pengontrol individu mengetahui apa pun tentang mengumpulkan data halaman master, saya merangkum logika itu ke dalam pabrik yang diteruskan ke setiap pengontrol:
Warisan cocok dengan master untuk melihat hubungan dengan baik, tetapi ketika harus membuat sebagian / kontrol pengguna saya akan menyusun data tampilan mereka ke dalam data tampilan halaman, misalnya
Ini hanya contoh kode dan tidak dimaksudkan untuk dikompilasi sebagaimana adanya. Dirancang untuk ASP.Net MVC 1.0.
sumber
Saya lebih suka memecah potongan data-driven dari tampilan master menjadi sebagian dan merendernya menggunakan Html.RenderAction . Ini memiliki beberapa keunggulan berbeda dibandingkan pendekatan pewarisan model tampilan populer:
sumber
EDIT
Generic Error telah memberikan jawaban yang lebih baik di bawah ini. Mohon dibaca!
Jawaban Asli
Microsoft sebenarnya telah memposting entri tentang cara "resmi" untuk menangani ini. Ini memberikan panduan langkah demi langkah dengan penjelasan tentang alasan mereka.
Singkatnya, mereka merekomendasikan menggunakan kelas pengontrol abstrak, tetapi buktikan sendiri.
sumber
Pengontrol abstrak adalah ide yang bagus, dan saya belum menemukan cara yang lebih baik. Saya juga tertarik untuk melihat apa yang telah dilakukan orang lain.
sumber
Saya melakukan penelitian dan menemukan dua situs ini. Mungkin mereka bisa membantu.
ASP.NET MVC Tip # 31 - Meneruskan Data ke Halaman Master dan Kontrol Pengguna
Meneruskan Data ke Halaman Master dengan ASP.NET MVC
sumber
Saya menemukan bahwa orang tua yang sama untuk semua objek model yang Anda berikan ke tampilan sangat berguna.
Akan selalu cenderung ada beberapa properti model umum antar halaman.
sumber
Objek Request.Params bisa berubah. Sangat mudah untuk menambahkan nilai skalar ke dalamnya sebagai bagian dari siklus pemrosesan permintaan. Dari perspektif tampilan, informasi itu bisa saja disediakan di QueryString atau FORM POST. hth
sumber
Saya berpendapat bahwa cara lain yang baik adalah membuat Antarmuka untuk tampilan dengan beberapa Properti seperti ParentView dari beberapa antarmuka, sehingga Anda dapat menggunakannya baik untuk kontrol yang memerlukan referensi ke halaman (kontrol orang tua) dan untuk tampilan master yang harus diakses dari tampilan.
sumber
Solusi lainnya kurang elegan dan memakan waktu terlalu lama. Saya minta maaf karena melakukan hal yang sangat menyedihkan dan miskin ini hampir setahun kemudian:
Jadi jelas saya memiliki metode statis Get () di SiteMasterViewData yang mengembalikan SiteMasterViewData.
sumber