Kontrolör verileri MVC modelindeki bir görünüme geçirmeli mi?


11

ASP.NET MVC (ve diğer web tabanlı MVC uygulamaları) ile sık sık çalışıyorum, ama bu hiç emin olmadım bir şey: Denetleyici ve görünüm iletişim gerekir?

Elbette denetleyici hangi görünümü kullanacağını seçmelidir, ancak denetleyicinin veriyi görünüme geçirmesi ne demektir? Bence, görünüm denetleyiciden veri bekliyorsa, o zaman etkili bir şekilde (denetleyici, görünüm) çifti olarak bağlanırlar. Bunun yerine, genellikle modelin kendisi ile iletişim kurmak ve herhangi bir denetleyiciden bağımsız olmak için görünümüm var.

Doğru yaklaşıma sahip miyim yoksa bu doğru cevabı olmayan bir vaka mı? Web'de çalışırken diğer ortamlara göre cevap değişiyor mu? Güçlü bir görünüm (ASP.NET MVC'de olduğu gibi) kavramınız olduğunda yanıt değişiyor mu?


"MVC" deki "M" bunun için - Modelden - Denetleyiciden Görünüme geçirilen verileri temsil eder.
Jay Sullivan

Yanıtlar:


7

Kontrolör, işleme / görüntüleme için görünüme aktarılacak olan verileri hazırlar. Ayrıca yayınlama-abone olma mekanizması veya benzeri bir yöntemle kullanıcı giriş verilerini kabul eder. MVC hakkında daha fazla bilgi için Wikipedia veya Martin Fowler'in web sitesindeki ilk şemayı inceleyin .

görünüm denetleyiciden veri bekliyorsa, etkin bir şekilde (denetleyici, görünüm) çifti olarak bağlanırlar.

Bir görünüm genellikle verileri kabul ederken, çoğu MVC çerçevesinde belirli denetleyicilere bağlı değildir. İstisnalar, örneğin, JavaServer Faces ailesidir. Genel olarak konuşursak, Rails, Django veya Spring MVC gibi çerçeveler, bir görünüme (bağlam, genellikle bir harita / sözlük / torba) bir görünüme (bir görünümün şablon görünüm modelinin bir uygulaması olduğu) bir görünüm ileterek denetleyicilerin görünümlerini ayırmanızı sağlar .

Güçlü bir görünüm (ASP.NET MVC'de olduğu gibi) kavramınız olduğunda yanıt değişiyor mu?

Programlama dilinizin güçlü yazılıp yazılmadığı, uygulamanızı düzenleme şekliniz üzerinde hiçbir etkiye sahip değildir.


Ne tür veriler hazırlanıyor ve aktarılıyor? Basit bir örnek alın: bir makaleyi kimliğine göre göstermek. Doğrulamadan sonra iletilen kimlik mi (bir makaleye işaret etmeyebilir) veya denetleyici makaleyi veritabanından alıp iletiyor mu?
Andy Hunt

Sadece kimliği geçerseniz, görünümünüz oluşturma işleminden daha fazla iş yapmıyor mu? Muhtemelen modelin ruhunda olmayacak verileri alması gerekir.
Rig

1

Ortaya koyduğunuz soru zaman zaman takımımda tartışılıyor. Eksileri ve artıları olan iki yaklaşım hakkında tartışıyoruz.

Birincisi, denetleyicinin görünümü aşağıdaki desenle güncelleyebileceğini iddia eder. Hem GUI hem de model olaylarını dinler. Bir GUI olayı meydana geldiğinde, modelde gerekli eylemi yürütür, bu da yangın ve olayı başlatır. Şimdi kontrolör genellikle görünümü gerekli verilerle güncelliyor.

İkinci yaklaşım, görünümün kendisinin model olaylarını dinlediğini ve olaya eklenmiş verilerle veya modeli sorgulayarak kendisini güncellediğini savunur.

İlk yaklaşımda, uygulamanızda olan her şeyi gerçekten kontrol eden denetleyiciye daha fazla gücünüz vardır. Elindeki olaya göre görünümün hangi şekilde güncellenmesi gerektiğine karar verme gücü ve bu şekilde görüşünüzü saf tutuyorsunuz. Ancak, dediğin gibi, bu şekilde görüşün ve kontrolörün birleşti.

İkincisinde onları ayırıyorsunuz, ancak görüşünüz aslında bir şekilde kendini kontrol ediyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.