2008-12-03 19 views
9

İlk uygulamamı ASP.NET MVP (Deneme Denetimi Deneme) ve Birim Testi ile yazıyorum (hiç olmamasından daha geç!) Ve bir ikilem içine giriyorum. . Tüm test edilmiş ve Interfaced up, Sunucular yedekte 3 Kullanıcı Kontrolleri yazdım. Şimdi, bu üç Kullanıcı Denetimi'ni alan ve aşağıdaki sorunla karşılaşan bir Sayfaya geldim:ASP.NET MVP - Kullanıcı Kontrollerini Kullanma

Kullanıcı Denetimi 1, DateSelector, diğer birkaç düğme/liste ile bir Takvim denetimi. Gerçekten heyecan verici bir şey yok.

Kullanıcı Denetimi 2 is DailyList. Ne olduğunu tahmin et. Her neyse, etc seçebilir/silebilirsiniz. Eğer gridview'den bir öğe seçerseniz, User Control 3'ü doldurması gerekir.

User Control 3 ItemDetail'dir. İşte DropDownLists, TextBoxes, vs ... bazıları diğerleri üzerinde varolan bağımlılıkları vardır (DropDown'daki bir seçeneği seçmek, DropDown 2'deki seçenekleri etkiler).

DateSelector'dan yeni bir Tarih seçtiğimde, olayı DateSelector Presenter'dan mı yükseltmeliyim? Bir şekilde diğer Kullanıcı Kontrollerinin yeni bir tarihin seçildiğini bilmelerine izin vermeliyim, böylece verilerini yeniden ispat edebilsinler, ama nasıl? Sayfa Kullanıcı Sunucusunu Kullanıcı Kontrol Görüntüleme Sunumlarına abone olmak için kullanırsam, Demeter Yasasını açıkça ihlal etmeyeceğim (Sunumcuları Görüntüleme olarak Özellikler olarak gösterme)? Sayfanın Sunucusunu sayfanın All-Knowing Controller'ı olarak kullanmamalı mıyım? Kaybettiğim bir şey mi var?

Şimdiye kadar okuduğum her şey "MVP, Kullanıcı Denetimleriyle bile harika" diyor, ancak Kullanıcı Denetimleri'nin kullanımı, örnekler söz konusu olduğunda rahatlıkla unutuluyor. Bana öyle geliyor ki MVC bu düşünceme daha yakın bir şekilde yaklaşıyordu, ama şu anda MVC bir seçenek değil. Herhangi bir yardım burada harika olurdu. Şimdiden teşekkürler.

cevap

4

Sayfa Yöneticisi, sayfadaki denetimler arasındaki etkileşimleri koordine eden kişi olmalıdır. Başka kim yapar? DateSelector kullanıcı denetimi olayında sayfa sunucusu dinlemem gerekir. Sayfa sunumu yapan kişinin bakış açısından, muhtemelen olayları (görüntüleyen veya sunumu yapan) DateSelector'a tamamen kapsüllenmiş bir denetim olarak görünen kimlerin olduğunu bilmesi gerekmiyor. Dahili çalışmalar sayfanın sunucusundan gizlenmiş olmalıdır.

Tüm bilir ki, DateSelector kullanıcı denetimi bir olay ortaya çıkardı ve şimdi kendi olayını arttırarak veya açık bir şekilde sunucudaki yöntemleri çağırarak diğer denetimleri sayfaya bildirmesi gerekiyor.

+0

Açıklama için teşekkürler. Sanırım asıl mesele, DateSelector olayını tanımlamaktı. Etkinliğe Sayfadan erişmem gerektiğinden, Görünüşte bildirilmesi gerekir (ancak Sunumdan yükseltilebilir). FYI, blog yayınlarınız beni işe koymada çok yardımcı oldu. Teşekkürler! – jstephenson