【问题标题】:Increment an Index Counter in Razor在 Razor 中增加索引计数器
【发布时间】:2018-04-27 15:16:58
【问题描述】:

我有一个 View 模型,它有一个 IEnumerable 对象,我循环显示一个数据表。该模型还有一组值,我想在同一个表中显示。

可枚举数据以foreach 循环显示。我尝试添加一个索引计数器来循环遍历同一张表上的数组,但计数器永远不会增加。如何将两个元素合并到同一个表中?

        //my foreach loop goes through my Item List
        @foreach (var item in @Model.ItemList)
        {
            //i need an indexer to go through MyArray
            var i = 0;
            <tr>
                <td>@Html.DisplayFor(shortDate => item.StartDate)</td><td>@Html.DisplayFor(shortDate => item.EndDate)</td><td>@Model.MyArray[i]</td><td>@item.Value</td>
            </tr>
            //here the index 'i' never seems to increment
            i++;
        }

结果是所有行只显示MyArray[0] 值。

【问题讨论】:

    标签: c# razor asp.net-core


    【解决方案1】:

    每次代码进入循环时,您的“i”都会设置为零。你必须像这样在循环之外初始化你的计数器:

    @{
        // Here the initialization happens outside of the loop
        var i = 0;
    } 
    
    @foreach (var item in @Model.ItemList)
    {      
        <tr>
            <td>@Html.DisplayFor(shortDate => item.StartDate)</td><td>@Html.DisplayFor(shortDate => item.EndDate)</td><td>@Model.MyArray[i]</td><td>@item.Value</td>
        </tr>
        //here your index should increment correctly
        i++;
    }
    

    否则,您可以通过以下方式找到您的索引:

    int index = @Model.ItemList.IndexOf(item);
    <tr>
        ...
        <td>
          @index
        </td>
        ...
    </tr>
    

    在你的循环中。

    【讨论】:

    • 在这种情况下如何初始化索引器。当我使用您建议的代码时,出现错误。我也试过@var i = 0,我也得到一个错误
    • 谢谢,使用Model.ItemList.IndexOf(item) 成功了
    • @coolhand 我还在我的答案中添加了初始化所需的 Razor 语法
    【解决方案2】:

    使用 for 循环而不是 foreach。

    @for (int i = 0; i < Model.ItemList.Count(); i++)
    {
        var item = Model.ItemList[i];
        <tr>
            <td>@Html.DisplayFor(shortDate => item.StartDate)</td><td>@Html.DisplayFor(shortDate => item.EndDate)</td><td>@Model.MyArray[i]</td><td>@item.Value</td>
        </tr>
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      • 1970-01-01
      • 2020-06-29
      • 1970-01-01
      • 2022-07-12
      • 1970-01-01
      • 2023-03-08
      相关资源
      最近更新 更多