2016-05-16 49 views
0

是否有可能使用比在下面的代码中foreach loop另一种解决方案能够从WeeksWeekNamesShort列表获取值只有一个td标签内是这样的:的<td> @week @monthName </td>而不是使用两个单独的td标签?模型的将模型中的数据合并到一个foreach循环中?

部分:

<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> 

回答

3

你可以调整视图模型,以符合您观的要求:

public class WeekViewModel 
{ 
    public int Number { get; set; } 
    public string Name { get; set; } 
} 
在查看代码的

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

部分

然后有一个IEnumerable<WeekViewModel>财产:

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

,然后可以循环:

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

谢谢您回答!但我不确定我应该如何使用您的代码。我已经在使用ViewModell类。我应该在哪里放置新的清单? –

+0

在您的项目视图模型中,包含2个IEnumerable列表的模型。 –

0

如果你想保持相同的视图模型,你可以使用一个for循环和LINQ扩展ElementAt

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