asp.net - 如何在视图中使用 ASP.NET Core 在 @foreach 循环中获取迭代数
问题描述
我是 ASP.NET Core 开发的新手。我正在寻找一种在 ASP.NET Core 视图中使用循环迭代数的内置方法。
我做了一些研究并找到了解决方案,比如在循环外创建 int 变量,然后在循环内递增。
我想索引每个用户。
这是我的代码:
@foreach (var item in l_IEnumerableModUserQuery)
{
<tr>
<td>
<!-- Here I want to add Iteration No. here-->
</td>
<td>
<a href="#">
@item.Pr_FullName
</a>
</td>
<td>@item.Pr_Email</td>
<td>@item.Pr_ContactNo</td>
</tr>
}
解决方案
您可以使用简单的 for 循环来获取索引:
//use .Count if it is a List or .Count() with Linq to get the boundary.
@for(var i = 0; i < l_IEnumerableModUserQuery.Count; i++)
{
<tr>
<td>
@i.ToString();
</td>
<td>
<a href="#">
@l_IEnumerableModUserQuery[i].Pr_FullName
</a>
</td>
<td>@l_IEnumerableModUserQuery[i].Pr_Email</td>
<td>@l_IEnumerableModUserQuery[i].Pr_ContactNo</td>
</tr>
}
Thomas Levesque 在他的博客上有一个简洁的方法,使用扩展方法:
public static IEnumerable<(T item, int index)> WithIndex<T>(this IEnumerable<T> source)
{
return source.Select((item, index) => (item, index));
}
这将导致:
@foreach (var (item, idx) in l_IEnumerableModUserQuery.WithIndex())
{
<tr>
<td>
@idx
</td>
<td>
<a href="#">
@item.Pr_FullName
</a>
</td>
<td>@item.Pr_Email</td>
<td>@item.Pr_ContactNo</td>
</tr>
}
着眼于扩展方法方法,您也可以修改您的视图模型并将索引作为属性包含在您的控制器/处理程序内的模型中或创建模型的任何位置:
var l_IEnumerableModUserQuery =
someSource.Where(x => ...)
.Select((x, index) => new MyModel {
Index = index,
Pr_Email = xxx,
Pr_Contact = xxy,
/* ... rest of model */
});
return l_IEnumerableModUserQuery;
在此之后,您可以像访问视图中的任何其他属性一样访问索引:
<a href="#">
@item.Index
</a>
推荐阅读
- javascript - 如何从静态文件夹中播放 html 中的 mp3 文件?
- python - Pandas 在更广泛的数据框中转换虚拟变量列表
- mongodb - 将 base64 插入 mongodb:语法错误 Unexpected token ILLEGAL
- python - SecurityError: 无法建立到“EOF 违反协议 (_ssl.c:841)”的安全连接
- azure - Azure 函数 - 缺少主机 Json 文件
- html - 浏览器窗口调整大小时内容向右侧截断
- jquery - 我有什么方法可以加快静态网页上的 jQuery 执行速度吗?
- sorting - 索引上的 Elasticsearch 排序设置给出奇怪的结果
- php - 如果存在多条路线,Laravel,刀片会显示一些东西
- salesforce - 使用外部 ID 插入到父子自定义对象