我的剃刀视图出了问题。我有以下内容:
public ICollection<Topic> Topics
public class Topic
{
public string Description { get; set; }
}
我想迭代整个集合并打印出如下结果:
@foreach (int index in Enumerable.Range(0, Model.Topics.Count())){
<div>@(index). Model.Topics[@(index)].Description"</div>
}
问题是我得到的只有:
0. Model.Topics[0].Description"
1. Model.Topics[1].Description"
我尝试了各种各样的东西,但仍然无法得到描述。
我做错了什么: - (
答案 0 :(得分:13)
试试这样:
@foreach (var item in Model.Topics)
{
<div>@Model.Topics.IndexOf(item). @item.Description</div>
}
答案 1 :(得分:7)
这应该有效:
@{int i = 0;}
@foreach (Topic tp in Model.Topics){
<div>@(i++).ToString() @tp.Description</div>
}
您正在尝试使用foreach
像for循环一样。 (可能就像一个C ++迭代器?)然而,foreach是一种语法糖,可以帮助你完成所有这些工作。
在C#foreach循环中对类型集合进行循环。所以如果你有:
int[] numbers = new int[] {1,2,3,4};
Person[] persons = //collection of persons
循环将是:
foreach(int n in numbers) { /*n would be each of the numbers*/ }
foreach(Person p in persons)
{/* p here would refer to each person per iteration*/ }
适用于任何IEnumerable(即IList,Arrays,Collections等)
答案 2 :(得分:0)
尝试:
@foreach (int index in Enumerable.Range(0, Model.Topics.Count())){
<div>@(index). @Model.Topics[index].Description</div>
}
甚至更好:
@{ int i = 1; }
@foreach (var topic in Model.Topics){
<div>@(i++). @topic.Description</div>
}