У меня проблема с обновлением из таблицы Razor View, и я не уверен, верен ли мой подход. Вместо того, чтобы отображать данные (для редактирования) в DIV, я показываю их в ТАБЛИЦЕ. Я могу понять, как скрытое свойство используется для обновления строки. В моем случае я показываю несколько строк на странице редактирования, но не могу обновить базу данных только для тех строк, которые имеют обновления.
Моя страница просмотра выглядит так
<form method="post">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<table class="table">
<thead>
<tr>
<th> @Html.DisplayNameFor(model => model.Fields[0].Name) </th>
<th> @Html.DisplayNameFor(model => model.Fields[0].Value) </th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.Fields)
{
<tr>
<td> <input type="hidden" asp-for=@item.ID /> </td>
<td> @Html.DisplayFor(modelItem => item.Name) </td>
<td contenteditable='true'> @Html.DisplayFor(modelItem => item.Value) </td>
</tr>
}
</tbody>
</table>
<div class="form-group">
<input type="submit" value="Save" class="btn btn-primary" />
</div>
</form>
И код позади это. Поля показывают 0 в методе OnPostAsyn c.
[BindProperty]
public IList<FieldInfo> Fields { get; set; }
public async Task<IActionResult> OnGetAsync(string id)
{
Fields = await _context.FieldInfo.Where(m => m.GUID == id).ToListAsync();
return Page();
}
public async Task<IActionResult> OnPostAsync()
{
foreach (var p in Fields) // In this approach Fields shows as count=0
{
_context.Attach(p.Value).State = EntityState.Modified;
}
_context.Attach(Fields).State = EntityState.Modified; // In this approach Exception: The entity type 'List<FieldInfo>' was not found.
await _context.SaveChangesAsync();
return RedirectToPage("./Index");
}