Проблема в том, что вы печатаете <span>@i</span>
до выполнения цикла foreach
(и, следовательно, до увеличения i
). Вы можете переместить <span>@i</span>
после цикла, чтобы увидеть ожидаемое поведение:
@{var i=0}
foreach (var item in Model.Boxlist)
{
<p>@item.name</p>
i++;
}
<span>@i</span>
Это даст:
<p>Foo</p>
<p>Bar</p>
<p>Baz</p>
<p>Qux</p>
<p>Quux</p>
<span>5</span>
Но, по-видимому, вы действительно хотите, чтобы <span>5</span>
появился перед <p>
.
В конечном счете, если i
используется только для подсчета количества элементов в списке, просто используйте метод расширения Count()
из Linq ((или Length
* 1021). * если ваша модель Array
или Count
, если это ICollection<T>
).
<span>@Model.Boxlist.Count()</span>
foreach (var item in Model.Boxlist)
{
<p>@item.name</p>
}
Это даст:
<span>5</span>
<p>Foo</p>
<p>Bar</p>
<p>Baz</p>
<p>Qux</p>
<p>Quux</p>