如何在 for 循环中使用 @Html.ActionLink

How do I use a @Html.ActionLink inside a for loop

如何使用 for 循环将 PGId 的值传递给控制器​​。我只想在我的案例中使用 for 循环

当我使用 for 循环时它不能正常工作:

            for (int i = 0; i < Model.Count; i++)
            {
                <tr>
                    <td>
                        @Html.DisplayFor(m => m[i].PGId)
                        @Html.HiddenFor(m => m[i].PGId)
                    </td>
                    <td>
                        @Html.ActionLink("Edit", "Edit", // pass PGId from here ???)
                    </td>
                </tr>
            }

当我使用 foreach 循环时,我的代码工作正常

                foreach (var item in Model)
                {
                    <tr>
                        <td>
                            @Html.DisplayFor(modelItem => item.PGId)
                        </td>
                        <td>
                            @Html.ActionLink("Edit", "Edit", new { id = item.PGId})
                        </td>
                    </tr>
                }

使用Model[i]:

for (int i = 0; i < Model.Count; i++)
{
    <tr>
        ...
        <td>
            @Html.ActionLink("Edit", "Edit", new { id = Model[i].PGId })
        </td>
    </tr>
}

你已经走上正轨了,只是你不知道如何完成的编辑部分。

您正在处理项目列表,在您的场景中,您将需要像访问数组一样访问每个单独的项目,即使用索引字段。

for (int i = 0; i < Model.Count; i++)
{
     <tr>
          <td>
               @Html.DisplayFor(m => m[i].PGId)
               @Html.HiddenFor(m => m[i].PGId)
          </td>
          <td>
               @Html.ActionLink("Edit", "Edit", new { id = Model[i].PGId })
          </td>
     </tr>
}

结果 HTML 代码将如下所示:

<tr>
     <td>
          10001
          <input name="[0].PGId" type="hidden" value="10001" />
     </td>
     <td>
          <a href="/Home/Edit/10001">Edit</a>
     </td>
</tr>
<tr>
     <td>
          10002
          <input name="[0].PGId" type="hidden" value="10002" />
     </td>
     <td>
          <a href="/Home/Edit/10002">Edit</a>
     </td>
</tr>