2009-05-06 13 views
7

İç içe geçmiş ana sayfalara ViewData atamanın iyi bir yolu var mı? Örneğin, en üst düzeydeki ana sayfada oturum açmış kullanıcı hakkında bilgi olabilir. Ayrıca, kullanıcı herhangi bir departman sayfasındayken görüntülenen yuvalanmış bir ana sayfam var. Bu verilerin SADECE departman sayfalarında kullanılabilir olmasını istiyorum.ViewData'yı iç içe ana sayfalara atama

Yani bu nasıl görünüyor:

Top Level Master Page - Includes ViewData["userData"] 
    | 
    | 
    ---> Nested Master Page - Includes ViewData["departmentalData"] 

Bu yüzden ViewData [ "userData"] ve ViewData [ "departmentalData"] hem yer alacağını iç içe ana sayfayı kullanan bir görünüme sahip olduğunda. Ama sadece üst düzey ana sayfayı kullanıyorum, o zaman sadece ViewData ["userData"] sahibim. Mümkün mü?

cevap

1

ViewData'yı ana sayfalara veri taşıyıcısı olarak kullanmakta ısrar ederseniz (muhtemelen kullanacağım MvcContrib projesinden Html.RenderAction (...) kullanmak yerine), bu durumda hangi durumlarda yuvalanmış ana sayfa kullanılacak, gerekli verileri ViewData ["departmentalData"] içine girmek için bir ActionFilter ayarlayabilirsiniz.

0

Bir olasılık, ihtiyacınız olan verileri almak için hem ViewPage hem de ViewMasterPage üzerinde bir uzantı yöntemi yazmaktır. Emin değilim, ama bence Rob Conery'nin Commerce.MVC paketinde yaptığı bu. Şuna bir bak.

0

Aynı problemimiz vardı. Şimdiye kadar, tüm denetleyiciler için bir temel sınıf ve ViewData'yı oluşturmak için korumalı bir yöntemle geldik. Bu özel ana sayfayı kullanan tüm eylemlerden diyoruz.

Başkalarının nelerle geldiğini görmek için bu soruyu kesinlikle takip edeceğim.

0

MVC için bir alt kontrolör konsepti vardır (bunun hala mevcut olup olmadığından emin değilim ve MVC çerçevesinde yolunu açacağım). Bunu codeplex üzerinde mvc katkıda bulunan projesinde bulabilirsiniz. Bazı açıklamalar veya blog yazısı ... burada bulabilirsiniz Bu masterpages dayalı değildir

http://mhinze.com/passing-objects-to-subcontrollers/

http://mhinze.com/subcontrollers-in-aspnet-mvc/

ve bu alt kontrol nesneleri geçirerek burada tartışılmaktadır ... ama yardımcı olabilir ...

0

Denetleyiciniz, görüntülenecek sayfa için uygun ViewData ayarladığı sürece, kaç tane ana sayfa olduğu önemli değildir. e kullanılıyor. Yoksa bir şey mi özlüyorum?