2011-09-12 19 views
30

Oldukça geniş olmaya başladığımdan projemize yeni bir Yönetici alanı ekledim ve yapılandırılmış halde tutmak istiyorum.MVC bölgelerini ve RenderAction'ı farklı denetleyicilerde nasıl yönetirim?

Bazı kullanıcı bilgileri içeren bir menüyü ve bir kısmı eklemek üzere bir paylaşımlı sayfa belirleyen bir _ViewStart.cshtml görünümüne sahibim. Bu, alan sayfamda eklenmediğinden, _ViewStart dosyasını da bölgeme ekledim.

Bu dosya, mizanpajı Yönetici alanımın dışındaki "~/Görünümler/Paylaşılan/_Layout.cshtml" olarak ayarlar. Ancak, _Layout dosyası, denetleyici üzerinde işlemek için bir Çocuk eylemi yöntemini çağıran bir RenderAction() yöntemini içerir. Sorun alanı bu kontrolörün görünürlüğünü var gibi olmamasıdır ve bu yüzden aşağıdaki istisna atar:

The controller for path '/Admin/LeadOrigin' was not found or does not implement IController. 

olsa oluştu nokta buradadır:

Line 70:   <div id="logindisplay"> 
Line 71:    @{ 
Line 72:     Html.RenderAction("UserInfo", "Account");    
Line 73:    } 
Line 74:   </div> 

RenderAction() Yukarıdaki gibi, Hesap denetleyicisi görünümün kapsamı dahilinde çalışır, ancak Yönetici alanında bu denetleyicinin kapsamı yoktur.

Bu soruna nasıl ulaşılacağı hakkında bir fikriniz var mı?

Sen RenderAction sizin durumunuzda üçüncü parametre olarak alır RouteValueDictionary (veya rota değerlerin sadece nesnenin) kapsamında bölgede belirtebilirsiniz

cevap

53

: Bu hesap kontrolörü üstleniyor

Html.RenderAction("UserInfo", "Account", new { area = "" }); 

kök olduğu alanı.

İlgili konular