Ниже мой обработчик get в pageModel
public async Task<ActionResult> OnGet(int? Id)
{
if (Id == null || Id == 0)
{
return NotFound();
}
MyContractPermission = _context.ContractPermission.Where(x => x.Id == Id).Include(c => c.BudgetAssignYears)
.FirstOrDefault();
if (MyContractPermission.BudgetAssignYears == null || MyContractPermission.BudgetAssignYears.Count == 0)
{
MyContractPermission.BudgetAssignYears = new List<BudgetAssignYear>();
}
YearList = new SelectList(SamfaEnums.Years);
return Page();
}
, и это Razor View:
<form method="post">
@for (var i = 0; i < Model.MyContractPermission.BudgetAssignYears.Count; i++)
{
var j = i + 1;
<tr class="d-flex" budgetRow>
<td class="col-1">
<span class="persian-number">@j</span>
<input type="hidden" asp-for="MyContractPermission.BudgetAssignYears[i].ContractPermissionId" />
</td>
<td class="col-2">
@Html.DropDownListFor(model => model.MyContractPermission.BudgetAssignYears[i].Year, SamfaEnums.Years.Select(s => new SelectListItem { Text = s, Value = s, Selected = s == "1397" ? true : false }), new { @class = "form-control", @yearSelect = "" })
<span class="text-danger" asp-validation-for="MyContractPermission.BudgetAssignYears[i].Year"></span>
</td>
<td class="col-2">
<select asp-for="MyContractPermission.BudgetAssignYears[i].BudgetType" class="form-control" asp-items="Html.GetEnumSelectList<BudgetType>()">
<option selected="selected" value="">choose one </option>
</select>
<span class="text-danger" asp-validation-for="MyContractPermission.BudgetAssignYears[i].BudgetType"></span>
</td>
<td class="col-2">
</td>
<td class="col-2">
</td>
<td class="col-2 in-center">
<input type="submit" value="delete" class="icon-red" asp-route-index="@i"
asp-page-handler="Delete"
onclick="return confirm('do you sure?');" />
</td>
</tr>
}
</form>
и, наконец, обработчик удаления в моей модели страницы выглядит так:
public async Task<IActionResult> OnPostDeleteAsync(int index)
{
if (!ModelState.IsValid)
{
return Page();
}
MyContractPermission.BudgetAssignYears
.Remove(MyContractPermission.BudgetAssignYears[index]);
YearList = new SelectList(SamfaEnums.Years);
return Page();
}
когда я нажал кнопку удаления, отправить Удалить Вызван обработчик в модели страницы и объект в BudgetAssignYears свойство удалено Сопоставлено с отправленным index , нопосле возвращения из представленного обработчика просто удалите последний объект.Я удаляю первый объект, но после публикации удаляю последний объект.В режиме отладки все в порядке и объект в индексе удален, но в поле зрения просто удалите последний элемент.