Кажется, что моя страница модели индекса в порядке, т.е. Index.cs html и Index.cs html .cs для вызова OnPostDelete. Но кнопка удаления не вызывает обработчик OnPostDelete. Если я изменю OnPostDelete на OnGetDelete, он будет работать, но не с OnPostDelete. Даже я пробовал с form method = "Post". Вот фрагмент кода для
<div>
@if (Model.ServiceTypes.Count == 0)
{
<p>No Service Type Defined.Please create the service type</p>
}
else
{
<table class="table table-striped border">
<tr class="table-secondary">
<th>
@Html.DisplayNameFor(m => m.ServiceTypes[0].Name)
</th>
<th>
@Html.DisplayNameFor(m => m.ServiceTypes[0].Price)
</th>
<th></th>
@foreach (var item in Model.ServiceTypes)
{
<tr>
<td>
@Html.DisplayFor(m => item.Name)
</td>
<td>
@Html.DisplayFor(m => item.Price)
</td>
<td style="width:150px;">
<div class="btn-group" role="group">
<a class="btn btn-primary text-white" asp-page="Edit" asp-route-Id="@item.Id">
<i class="far fa-edit"></i>
</a>
<a class="btn btn-success text-white" asp-page="Details" asp-route-Id="@item.Id">
<i class="fas fa-list"></i>
</a>
<a class="btn btn-danger text-white" asp-page="Index" asp-page-handler="Delete" asp-route-Id="@item.Id">
<i class="fas fa-trash"></i>
</a>
</div>
</td>
</tr>
}
</table>
}
</div>
и соответствующий код для обработчика действия
public async Task<IActionResult> OnGetDelete(int Id)
{
var ServiceTypefromDb = await _db.ServiceType.FindAsync(Id);
if (ServiceTypefromDb == null)
{
return NotFound();
}
_db.ServiceType.Remove(ServiceTypefromDb);
await _db.SaveChangesAsync();
return RedirectToPage("./Index");
}