gpt4 book ai didi

asp.net - 如何通过在 View 中使用 ASP.NET Core 在 @foreach 循环中获取迭代数

转载 作者:行者123 更新时间:2023-12-05 03:35:53 24 4
gpt4 key购买 nike

我是 ASP.NET Core 开发的新手。我正在寻找类似在 ASP.NET Core View 中使用循环迭代次数的内置方法。

我做了一些研究并找到了解决方案,例如在循环外创建 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 在他的 blog 上有一个巧妙的方法,使用扩展方法:

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>
}

着眼于扩展方法方法,您还可以修改 View 模型并将索引作为属性包含在模型中的 Controller /处理程序中或创建模型的任何位置:

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;

在此之后,您可以像访问 View 中的任何其他属性一样访问索引:

 <a href="#">
@item.Index
</a>

关于asp.net - 如何通过在 View 中使用 ASP.NET Core 在 @foreach 循环中获取迭代数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69764182/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com