Apa 'siklus hidup halaman' dari halaman ASP.NET MVC, dibandingkan dengan ASP.NET WebForms?

158

Apa 'siklus hidup halaman' dari halaman ASP.NET MVC, dibandingkan dengan ASP.NET WebForms?

Saya mencoba untuk lebih memahami pertanyaan 'sederhana' ini untuk menentukan apakah atau tidak ada halaman yang saya miliki di (sangat) situs sederhana dapat dengan mudah dikonversi dari ASP.NET WebForms.

Entah 'konversi' dari proses di bawah ini, atau siklus hidup alternatif akan menjadi apa yang saya cari.

Apa yang saya lakukan saat ini:

(ya saya tahu bahwa siapa pun yang mampu menjawab pertanyaan saya sudah tahu semua ini - saya hanya mencoba untuk mendapatkan perbandingan 'siklus hidup' jadi saya pikir saya akan mulai dengan mengisi apa yang sudah kita semua tahu)

Merender halaman:

  • Saya memiliki halaman master yang berisi template dasar saya
  • Saya memiliki halaman konten yang memberi saya daerah bernama dari halaman master tempat saya menaruh konten.
  • Dalam pengendali event untuk setiap halaman konten saya memuat data dari database (kebanyakan hanya baca-saja).
  • Saya mengikat data ini ke kontrol ASP.NET yang mewakili kisi, dropdown, atau repeater. Data ini semua 'hidup' di dalam HTML yang dihasilkan. Beberapa masuk ke ViewState (tapi saya tidak akan terlalu banyak ke dalamnya!)
  • Saya mengatur properti atau mengikat data ke item tertentu seperti kontrol Gambar atau TextBox pada halaman.
  • Halaman dikirim ke klien yang dibuat sebagai HTML yang tidak dapat digunakan kembali.
  • Saya mencoba untuk menghindari menggunakan kondisi tampilan selain dari apa yang halaman butuhkan sebagai minimum.

Sisi klien (tidak menggunakan ASP.NET AJAX):

  • Saya dapat menggunakan JQuery dan beberapa trik jahat untuk menemukan kontrol pada halaman dan melakukan operasi pada mereka.
  • Jika pengguna memilih dari dropdown - postback dihasilkan yang memicu peristiwa C # di codebehind saya. Acara ini mungkin masuk ke basis data, tetapi apa pun yang dilakukannya, laman HTML yang baru dibuat akhirnya dikirim kembali ke klien.
  • Saya dapat menggunakan Page.Session untuk menyimpan pasangan nilai kunci yang harus saya gunakan kembali nanti

Jadi dengan MVC bagaimana perubahan 'siklus hidup' ini?

Simon_Weaver
sumber
2
Beberapa referensi dari bookmark saya yang menyoroti cara kerja pipeline permintaan di ASP.NET MVC. Ini biasanya akan membantu 1. untuk memahami ASP.NET MVC itu sendiri 2. untuk memahami apa saja perbedaan poin injeksi yang disediakan oleh MVC dan memahaminya. https://docs.google.com/open?id=0B0_EIyBZvSQsOTU3N2Q2NDEtMWNjMS00ZTc0LWJmMjUtM2I0M2I5NDY2ZDNl [ simple-talk.com/content/article.aspx?article=1358](https://...
humblelistener
Siklus halaman adalah sebagai berikut: [ stackoverflow.com/questions/15066770/… [1]: stackoverflow.com/questions/15066770/…
Insan
siklus halaman adalah sebagai berikut: stackoverflow.com/questions/15066770/…
Insan

Jawaban:

39

Saya akan mencoba mengomentari setiap poin yang Anda sebutkan:

Halaman master Anda masih ada di MVC dan digunakan untuk memberikan tata letak yang konsisten ke situs. tidak banyak yang baru di sana.

Halaman konten Anda akan menjadi tampilan di dunia MVC. Mereka masih menyediakan area konten yang sama ke halaman master Anda.

Penanganan formulir web tidak boleh digunakan dalam MVC, sebagai gantinya kelas Kontroler Anda dan metode tindakan mereka akan menangani memuat data Anda ke dalam "model" yang diteruskan ke tampilan.

Meskipun penyatuan data gaya webform dimungkinkan di MVC, saya menemukan bahwa itu bukan solusi optimal. Lebih baik menempatkan data Anda di kelas model dan sangat ketik tampilan Anda sehingga Anda memiliki akses langsung ke model itu. Maka itu hanya masalah menggunakan <%= ViewData.Model.SomeProperty %>sintaks untuk mengakses data Anda dan menampilkannya di lokasi yang diinginkan. Adapun kondisi tampilan, rekomendasi saya adalah untuk melupakan bahwa itu bahkan ada.

Ingat bahwa salah satu keuntungan menggunakan MVC adalah Anda memiliki kendali atas HTML yang Anda kirim ke klien. Merangkul kekuatan itu dan mencoba untuk menemukan solusi yang memungkinkan Anda untuk mempertahankan kontrol itu. Kontrol webform berupaya menyembunyikan html dari Anda dan karenanya membuatnya lebih sulit untuk menyesuaikan html saat diperlukan.

Saya akan sangat merekomendasikan JQuery atau salah satu perpustakaan javascript yang sama kuatnya. Tetapi belajar menggunakannya untuk mengakses DOM HTML secara langsung dan menghindari masalah pengelolaan kontrol formulir web.

Anda dapat menggunakan jquery untuk menghubungkan ke dalam pilihan dropdown di sisi klien dan mengirimkan permintaan gaya standar atau ajax. Permintaan tersebut dapat mengembalikan halaman baru, arahan ulang, fragmen html atau bahkan data JSON yang dapat digunakan untuk memperbarui halaman yang ada.

Sesi asp.net dapat digunakan sesuai kebutuhan.

Mike Glenn
sumber
terima kasih atas jawaban Anda. sebenarnya JQuery yang mendorong saya untuk kembali ke MVC. Saya telah melihatnya sebentar dan menolaknya (setidaknya untuk saat ini). bermain dengan JQuery dan mencoba untuk hanya menemukan hal-hal di DOM sudah terlalu banyak rasa sakit jadi saya pikir saya akan mencoba untuk kembali ke MVC dan belajar lebih banyak
Simon_Weaver
Halaman MVC memiliki Modelproperti untuk mengakses model, Anda tidak harus melalui ViewData.
Tsahi Asher