2017-09-18 17 views
0

私たちのウェブサイトでは、クライアントはフッタ列、つまりテキストボックスに異なる項目を追加できます。アイテムはサイトの他の領域で使用され、コードの重複を最小限に抑えたいので、これらの異なるアイテムのコードを1つの部分的なビューに保持したいと考えました。入れ子部分図

foreachステートメント内にパーシャルビューをネストし、親foreachに基づいてifステートメントを渡すことが可能かどうかは疑問でした。

私はThree_Column_Footerと呼ばれる部分図に次のコードを持っている:

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage 
@{ 
     var root = Model.Content.Site(); 
     var thefooter = root.FirstChild("footer").Children(); 
    } 
    <footer class="footer color-main"> 
     <div class="container"> 
      <div class="row"> 
       @foreach(var foot in thefooter){ 
        var childcol = foot.Children; 
         <div class="col-6"> 
          @foreach(var item in childcol){ 
           @Html.Partial("Footers/FooterStubs", item) 
          } 
         </div> 
       } 
      </div> 
     </div> 
    </footer> 

私は上記のforeachのパーシャルと呼ばれるFooterStubsで認識されるようになっての何らかの方法が必要です。 @inherits Umbraco.Web.Mvc.UmbracoViewPage<IPublishedContent>またはModel.GetPropertyValue<IEnumerable<IPublishedContent>>でこれを行うことができますか?もしそうなら、

ありがとうございます!

+0

「FooterStubs」の内容、特に最初の6行を含めてください。 – mjwills

+0

私は混乱しているビットであるため、FooterStubsにはこの行だけがあります:@inherits Umbraco.Web.Mvc.UmbracoViewPage

+0

あなたは2つの部分ビューを持っています。あなたがお互いを参照しているということを意味する2つのPV(部分表示)がありますか?上記の場合、 'Three_Column_Footer' –

答えて

0

Partialメソッドには、additionalViewDataを受け入れるオーバーロードがあります。私はあなたが実際に部分的に必要なものを見るかわからない

@{ 
    var foot = ViewData["foot"] as YourFootClass; 
} 

、しかし:あなたの部分に続いて

@Html.Partial("Footers/FooterStubs", item, new ViewDataDictionary(ViewData) 
{ 
    { "foot": foot } 
}); 

:あなたは、部分的に持っている必要があります任意の追加のコンテキストを提供するために、これを利用することができます基本的には、このように好きなものを追加することができます。 ViewDataは動的辞書であることを念頭に置いておきましょう。だから、あなたが出てくるものは何でも入力する必要があります。