2012-02-16 24 views
6

Projem için ana düzenini (üstbilgi, altbilgi) tanımlayan bir _ViewStart var.İç içe yerleştirilmiş içerik için _ViewStart öğelerini kullanma

Bu projede birkaç alanım var. Her alan aynı üstbilgi ve altbilgiye ve kendi yan menüsüne sahiptir. Bunun için, o alanın kök dizininde bir _ViewStart yarattım. İşte (basitleştirilmiş) kodudur:

/Views/_ViewStart.cshtml

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

/Views/Shared/_Layout.cshtml

<html> 
     <div> 
      //header 
     </div> 
     <div> 
      @RenderBody 
     </div> 
    </html> 

Alan Foo ->/Alanlar/Foo/Görünümler /_ViewStart.cshtml

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
<div class="row"> 
<div class="sidemenu"> 
    //default sidemenu for this area 
</div> 
<div> 
     @RenderBody() 
</div> 
</div> 

/Areas/Foo/Views/Bar/Index.cshtml işlenmez sayfası ve bu hatayı alıyorum:

CS0103: 'RenderBody' adı geçerli bağlamda nasıl ana sayfa yuvalama bu tür ulaşmak için

içinde yok?

cevap

9

Benim kendi soruyu yanıtlamak istemem ama burada o da: Orada bir RenderBody istiyorsanız

Sen alanının _ViewStart doğrudan sitenin kök _ViewStart başvuramaz.

Yani çözümdür:

/Views/_ViewStart.cshtml referanslar /Views/Shared/_MainLayout.cshtml

/Areas/Foo/Views/_ViewStart.cshtml referanslar /Areas/Foo/Views/Shared/_AreaLayout.cshtml

/Areas/Foo/Views/Shared/_AreaLayout.cshtml referansları /Views/Shared/_MainLayout.cshtml

Ve işte bu kadar. "RenderBody()" yöntemini kullanmak için "Paylaşılan" klasörünü kullanmanız gerekir.

İlgili konular