在我的一个视图中,我需要在mvc应用程序中使用for循环而不是foreach。我在访问所需对象时遇到问题
foreach遍历模型中的每个对象
@foreach (var cat in Model)
{
@cat.Name
}
我想做同样的事情,但要告诉我想要哪个对象
这很有效:)谢谢你们!
<ul class='kwicks kwicks-vertical'>
@for (float i = 0; i < (float)Model.Count() / 3; i++)
{
var numObjects = @i * 3;
<li>
<ul class='kwicks kwicks-horizontal'>
@for (int j = 0; j < 3; j++)
{
if (numObjects == Model.Count())
{
break;
}
var element = @Model.ToList();
<li>@element[(int)numObjects].Name</li>
numObjects++;
}
</ul>
</li>
}
</ul>
答案 0 :(得分:1)
你应该使用int作为i
。
@for(int i = 0; i < Model.Count(); i++)
{
var element = Model[i];
<div>@element.Name</div>
}
答案 1 :(得分:0)
我假设你有IEnumerable<T>
序列作为模型。因此,要以基于索引的方式访问它,您需要将其转换为列表或数组。
尝试这样的事情:
@{var model = Model.ToList();}
@for(var i = 0; i < Model.Count; i++)
{
/----
here you can say @Model[i].Name ??
----/
}
当然,如果您将模型的类型从IEnumerable<T>
更改为支持按索引访问元素的内容(例如T[]
或List<T>
更新: 关于你的算法:我不会把划分浮点数弄得乱七八糟,并将其重写为:
var i = 0;
foreach(var mod in Model)
{
if(i % 3 == 0)
{
<li>
<ul class='kwicks kwicks-horizontal'>
}
<li>Element @i</li>
if(i % 3 == 0)
{
</ul>
</li>
}
i++;
}
或者如果你仍然需要&#39;循环我会考虑使用一个声明:
@for(var i = 0; i < Model.Count(); i+=3)