视图中的增量不显示更新的值仅显示初始化值asp.net mvc

时间:2019-01-17 18:39:18

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

视图

@{var i=0} 

<span>@i</span> //showing only initialized value not showing i value 1 or 2 or 5 or some other value

foreach (var item in Model.Boxlist)
{
    <p>@item.name</p>

    i++; //increment i here.
} 

i 不显示更新的值,仅显示错误的初始值,请告诉我。p标签显示5次,因为 Model 有5个项目,但不显示 i 5.

1 个答案:

答案 0 :(得分:0)

问题是您正在执行<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来计算列表中的项目数,则只需使用Linq的Count()扩展方法,或者(如果模型是ArrayLength(如果是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>