2016-05-16 3 views
0

Ist es möglich, unter einem anderen Lösung als die foreach loop im Code zu verwenden, die Lage sein, die Werte von Weeks und WeekNamesShort Listen wie diese innerhalb von nur einem Tag td zu bekommen: <td> @week @monthName </td> statt zwei separate td-Tags zu verwenden?Daten vom Modell in eine foreach-Schleife kombinieren?

Teil des Modells:

public IEnumerable<int> Weeks { get; set; } 
public IEnumerable<string> WeekNamesShort { get; set; } 

Teil des Codes in der Ansicht:

<tr> 
<td></td>    
@foreach (var week in project.Weeks) 
{ 
    <th class="week" data-week="@week">@week</th> 
} 
</tr> 
<tr> 
<td></td> 
@foreach (var monthName in project.WeekNamesShort) 
{ 
    <td class="week">@monthName</td> 
} 
</tr> 

Antwort

3

Sie könnten das Ansichtsmodell passen Sie die Anforderungen Ihrer Ansicht anzupassen:

public class WeekViewModel 
{ 
    public int Number { get; set; } 
    public string Name { get; set; } 
} 

und dann eine IEnumerable<WeekViewModel> Eigenschaft:

public IEnumerable<WeekViewModel> Weeks { get; set; } 

und dann können Sie Schleife:

@foreach (var week in project.Weeks) 
{ 
    <td class="week"> 
     @week.Number 
     @week.Name 
    </td> 
} 
+0

Vielen Dank für Ihre Antworten! Aber ich bin mir nicht sicher, wie ich deinen Code benutzen soll. Ich verwende bereits eine ViewModell-Klasse. Wo sollte ich die neue Liste platzieren? –

+0

In Ihrem Projektmodell, das die 2 IEnumerable-Listen enthielt. –

0

Wenn Sie die gleiche Ansicht Modell behalten möchten, können Sie eine for-Schleife verwenden und die LINQ-Erweiterung ElementAt:

@for(var i = 0; i < 7; i++) 
{ 
    <td class="week"> 
     @Model.Weeks.ElementAt(i) 
     @Model.WeekNamesShort.ElementAt(i) 
    </td> 
} 
Verwandte Themen