Увеличение счетчика индекса в Razor - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть модель View, в которой есть объект IEnumerable, который я перебираю для отображения таблицы данных. Модель также имеет массив значений, которые я хотел бы отобразить в той же таблице.

Перечисляемые данные отображаются с циклом foreach. Я попытался добавить счетчик индекса, чтобы перебрать массив в той же таблице, но счетчик никогда не увеличивается. Как я могу объединить оба элемента в одной таблице?

        //my foreach loop goes through my Item List
        @foreach (var item in @Model.ItemList)
        {
            //i need an indexer to go through MyArray
            var i = 0;
            <tr>
                <td>@Html.DisplayFor(shortDate => item.StartDate)</td><td>@Html.DisplayFor(shortDate => item.EndDate)</td><td>@Model.MyArray[i]</td><td>@item.Value</td>
            </tr>
            //here the index 'i' never seems to increment
            i++;
        }

В результате отображается только значение MyArray[0] для всех строк.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Используйте цикл for вместо foreach.

@for (int i = 0; i < Model.ItemList.Count(); i++)
{
    var item = Model.ItemList[i];
    <tr>
        <td>@Html.DisplayFor(shortDate => item.StartDate)</td><td>@Html.DisplayFor(shortDate => item.EndDate)</td><td>@Model.MyArray[i]</td><td>@item.Value</td>
    </tr>
}
0 голосов
/ 27 апреля 2018

Каждый раз, когда код попадает в цикл, ваше «i» устанавливается в ноль. Вы должны инициализировать свой счетчик вне цикла следующим образом:

@{
    // Here the initialization happens outside of the loop
    var i = 0;
} 

@foreach (var item in @Model.ItemList)
{      
    <tr>
        <td>@Html.DisplayFor(shortDate => item.StartDate)</td><td>@Html.DisplayFor(shortDate => item.EndDate)</td><td>@Model.MyArray[i]</td><td>@item.Value</td>
    </tr>
    //here your index should increment correctly
    i++;
}

В противном случае вы можете найти свой индекс просто по этому:

int index = Model.ItemList.IndexOf(item);

внутри вашей петли. Я не проверял синтаксис (куда следует добавить @), но вы меня поняли.

...