从DataView(List <int>)</int>访问单个int元素

时间:2014-04-07 14:17:36

标签: c# .net asp.net-mvc-4

我将一个DataView对象(一个int列表)传递给一个视图。我的页面上还有一个foreach循环,我想在其中执行以下操作:

<% foreach (var item in Model) { %>
    <% if ((ViewData["listOfIDs"] as List<int>).ElementAt(i) == item.ID){
        <p>Display this</p>
    { %>
{ %>

我有两个问题。首先,我必须得到foreach循环的迭代次数,而不将其转换为for循环。其次,我必须在if语句中写一个有效的表达式。

我很乐意使用for循环,但我不知道如何重写foreach循环中的行,如下所示:

<% foreach (var item in Model) { %>
<tr>
    <td>
        <%: Html.DisplayFor(modelItem => item.project.name) %>
    </td>
    <td>
        <%: Html.DisplayFor(modelItem => item.name) %>
    </td>
    <td>
        <%: Html.DisplayFor(modelItem => item.priority) %>
    </td>
    <td>
        <%: Html.DisplayFor(modelItem => item.points) %>
    </td>
    <td>
        <%: Html.ActionLink("Eidt", "Edit", new {  id=item.card_id }) %> |
        <%: Html.ActionLink("Details", "Details", new {  id=item.card_id }) %> |
        <%: Html.ActionLink("Delete", "Delete", new {  id=item.card_id }) %>
    </td>
</tr>
<% } %>

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

<% foreach (var item in Model) { %>
    <% if ((ViewData["listOfIDs"] as List<int>).ElementAt((ViewData["listOfIDs"] as List<int>).IndexOf(item)) == item.ID){
        <p>Display this</p>
    { %>
{ %>

讨厌,缓慢,难以理解,容易破碎。

<% for  (int i=0; i < Model.Count; i++) { %>
<tr>
    <td>
        <%: Html.DisplayFor(modelItem => Model[i].project.name) %>
    </td>
    <td>
        <%: Html.DisplayFor(modelItem => Model[i].name) %>
    </td>
    <td>
        <%: Html.DisplayFor(modelItem => Model[i].priority) %>
    </td>
    <td>
        <%: Html.DisplayFor(modelItem => Model[i].points) %>
    </td>
    <td>
        <%: Html.ActionLink("Eidt", "Edit", new {  id=Model[i].card_id }) %> |
        <%: Html.ActionLink("Details", "Details", new {  id=Model[i].card_id }) %> |
        <%: Html.ActionLink("Delete", "Delete", new {  id=Model[i].card_id }) %>
    </td>
</tr>
<% } %>