如何防止在foreach循环中生成重复的ID字段?

时间:2019-06-14 13:22:50

标签: asp.net-core mvvm .net-core razor-pages

在每个循环中循环访问a时生成唯一元素id的过程是什么?

输入

@foreach (var x in Model.Class.Where(h => h.ID == 0))
{
  <form method="post">
    <input asp-for="@x.Field">
  </form>
}

当前asp-for标签会自动从模型中生成一个ID,但会为循环中呈现的每个元素创建相同的ID。

输出

<input type="checkbox" data-val="true" id="x_Field" name="x_Field" checked="checked" value="true">

没有ASP-FOR

还是我必须对html进行硬核化,而不是使用asp-for进行这样的迭代?

<input id="x[@x.Id].Field" checked="checked" />

1 个答案:

答案 0 :(得分:1)

如果您想为name属性保留相同的值,而为id属性保留不同的值,则可以传递一个显式值,该值将覆盖基于属性的标记助手的生成值名称:

@foreach (var x in Model.Class.Where(h => h.ID == 0))
{
  <form method="post">
    <input asp-for="@x.Field" id="@($"custom{x.ID}")">
  </form>
}