2015-12-01 5 views
5

मैं अपने पृष्ठ उस्तरा और MVC 5. प्रयोग पर आइटम की एक बड़ी सूची outputting हूँ डालने यहाँ मैं वर्तमान में है:उस्तरा - foreach का उपयोग कर, एचटीएमएल हर वें आइटम

@foreach (var item in Model.Items) 
{ 
    <a>@item.Name</a> 
} 

क्या मैं कोशिश कर रहा हूँ ऐसा कुछ ऐसा है जो इसे आउटपुट करेगा:

<div class="tab-0"> 
    <a>Item 1</a> 
    <a>Item 2</a> 
    <a>Item 3</a> 
    <a>Item 4</a> 
</div> 
<div class="tab-1"> 
    <a>Item 5</a> 
    <a>Item 6</a> 
    <a>Item 7</a> 
    <a>Item 8</a> 
</div> 
<div class="tab-2"> 
    <a>Item 9</a> 
    <a>Item 10</a> 
    <a>Item 11/a> 
    <a>Item 12</a> 
</div> 

मुझे प्रत्येक 4 आइटम को div टैग के भीतर समूह करने की आवश्यकता है। मैं रेजर में ऐसा कैसे कर सकता हूं?

+0

मुझे लगता है कि आपको इसके लिए अपना तर्क बनाना है :) –

उत्तर

6

सुनिश्चित नहीं हैं कि अपने Item की संख्या को बढ़ाना चाहते हैं, तो (या @item.Name वास्तव में वृद्धि की जाती नंबर शामिल हैं), लेकिन निम्नलिखित कोड दोनों वर्ग के नाम (एक नई div हर 4 यात्रा) और आइटम की संख्या को बढ़ाना होगा।

@{ var t = 0; var i = 1; } 
<div class="[email protected]"> 
    @foreach (var item in Model.Items) 
    { 
     <a>Item @i</a> // this may be just @item.Name? 
     if (i % 4 == 0) 
     { 
      t++; 
      @:</div><div class="tab-"@t> 
     } 
     i++; 
    } 
</div> 
0

foreach आपको सूचकांक नहीं देता है। वह सी # है।

मेरा सुझाव है कि आप इसे for पर बदलें।

@foreach (var index = 0; index < Model.Items.Count; index++) 
{ 
    var item = Model.Items[index]; 
    <a>@item.Name</a> 
    @* Use `item` or `index` as you wish here *@ 
} 

शायद तुम Length बजाय Count का उपयोग करेंगे। यदि Model.Items सिर्फ IEnumerable सरणी या List<> नहीं है, तो आप Model.Items.ToList() आदि पर कॉल करना चाहेंगे, आपको शायद यह विचार मिल जाएगा।

0

यहां मेरा समाधान है। मन है कि मैं अपने आप को कोड संकलित नहीं किया है रखें, तो यह जाँच कृपया:

foreach(var item in Model.Items.Select((x, i) => new {Index = i, Value = x})) 
{ 
    if (item.Index % 4 == 0) 
    { 
     <div class="[email protected](item.Index/4)"> 
    } 

      <a>Item @(item.Index + 1)</a> 

    if (item.Index % 4 == 0) 
    { 
     </div> 
    } 
} 

// If the number of items has a remainder of 4, close the div tag 
if(Model.Items.Count %4 != 0) 
{ 
    @:</div> 
} 

मैं मामले में Linq Select में Value जोड़ लिया है आप पाश अंदर जानकारी की जरूरत है।

संबंधित मुद्दे