我不知道asp.net mvc 5中的@foreach是做什么的

时间:2016-11-11 05:02:49

标签: asp.net asp.net-mvc-5

我是新手,我不知道@foreach是做什么的。 这是我老师写的代码

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.MaSach)
        </td>
        <td>
            <img src="~/HinhAnhSP/@Html.DisplayFor(modelItem => item.AnhBia)" width="100" />
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.TenSach)
        </td>
        <td>
            @Html.DisplayFor(modelItem=> item.GiaBan)
        </td>
        <td>
            @Html.ActionLink("Details", "Details", new { id = item.MaSach }) |
            @Html.ActionLink("Add to Cart", "Add", "Cart", new { id = item.MaSach }, new {url ="" })
        </td>
    </tr>
}

1 个答案:

答案 0 :(得分:1)

foreach是一个循环遍历集合项的构造(实际上是一个枚举,但现在不记得了)并重复括号内的任何内容({})对于每个项目,在循环的每次迭代中分配一个变量(在这种情况下命名为item

在您的情况下,Model是项目的集合(某些类型,您尚未向我们展示)。因此,在每次迭代时,它将在括号之间写入所有HTML代码,在每次迭代时为当前项的内容分配一个名为item的变量。

因此,假设Model是五个类型为MyType的项目的集合,其定义为:

class MyType {
   public string Name;
}

其中Name在第一项中包含字符串Hello1,在第二项中包含Hello2,等等:

所以,如果你这样做:

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

解析后的结果将是:

<p>Hello1</p>
<p>Hello2</p>
<p>Hello3</p>
<p>Hello4</p>
<p>Hello5</p>