Инструменты и Pltaform: ASP. NET Core MVC 3.1, Visual Studio 2019, Win 10
Обновление: это представление Upsert. Я пытаюсь l oop через свойства модели на странице Razor для создания меток и ввода HTML элементов внутри тега формы, но визуализированный HTML имеет «Item» (имя переменной в foreach ) в качестве значения идентификатора, имени и * для атрибутов HTML.
Отображается HTML в браузере
<div class="form-group row">
<div class="col-3">
<label for="item">item</label>
</div>
<div class="col-6">
<input class="form-control" type="text" id="item" name="item" value="Author">
<span class="text-danger field-validation-valid" data-valmsg-for="item" data-valmsg-replace="true"></span>
</div>
</div>
HTML отображается в браузере Razor foreach l oop производит HTML
@{ var propList = new string[] { "Name", "Author", "ISBN" };}
@foreach (var item in propList)
{
<div class="form-group row">
<div class="col-3">
<label asp-for="@item"></label>
</div>
<div class="col-6">
<input asp-for="@item" class="form-control" />
<span asp-validation-for="@item" class="text-danger"></span>
</div>
</div>
}
Может кто-нибудь объяснить, почему это происходит?
Обновление: Основываясь на предложениях «@Ben Sampica», я внес эти изменения. Как бы выглядело мое представление. Я имею в виду, что помню, как использовал список моделей для представления в виде таблицы (я использовал ASP. NET MVC несколько лет назад, теперь перехожу к. net core), вот внесенные мной изменения,
Просмотр:
@foreach (var book in Model.Books)
{
<div class="form-group row">
<div class="col-3">
<label asp-for="@book.Name"></label>
</div>
<div class="col-6">
<input asp-for="@book.Name" class="form-control" />
<span asp-validation-for="@book.Name" class="text-danger"></span>
</div>
</div>
}
Я использую точное Модель просмотра, как вы описали "BooksViewModel"
Я не указывал, что в вопросе раньше, но для ясности, я создаю представление Upsert, поэтому теперь ViewModel представляет собой список, хотя меня беспокоит только по одной записи за раз, модель представления пуста при действии создания, потому что в списке нет данных.