Как предотвратить генерацию дублирующих полей идентификаторов в цикле foreach? - PullRequest
0 голосов
/ 14 июня 2019

Какова процедура генерации уникальных идентификаторов элементов при выполнении итерации для каждого цикла?

ВХОД

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

В настоящее время тег asp-for будет автоматически генерировать идентификатор из модели, но он будет создавать тот же идентификатор для каждого элемента, отображаемого в цикле.

OUTPUT

<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 Ответ

1 голос
/ 14 июня 2019

Если вы хотите сохранить то же значение для атрибута 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>
}
...