HttpPost при удалении не срабатывает, однако HttpGet, кажется, работает нормально, когда я показываю содержимое.Однако я немного путаюсь со следующим адресом маршрута, сгенерированным, когда я нажимаю HttpGet для действия удаления: -
https://localhost:44394/9
, если он не генерирует такую ссылку: https://localhost:44394/Post/DeletePost/9
Контроллер: -
[HttpPost, ActionName("DeletePost")]
public async Task<IActionResult> ConfirmDelete(int id)
{
await _repository.DeletePostAsync(id);
return RedirectToAction(nameof(GetAllPosts));
}
[HttpGet("{id}")]
public async Task<IActionResult> DeletePost(int id)
{
var post = await _repository.GetPostById(id);
if(post == null)
{
return NotFound();
}
return View(post);
}
Просмотр бритвы для HttpGet: -
<div class="btn btn-outline-danger delete">
<a href="@Url.Action("DeletePost", "Post", new { id = p.Id })">Delete
</a>
</div>
Страница бритвы HttpPost: -
<div class="container">
<div class="row">
<div class="col-9">
<p>
@Model.Topic
</p>
<p class="timeStampValue" data-value="@Model.Published">
@Model.Published
</p>
<p>
@Model.Author
</p>
<section>
<markdown markdown="@Model.Content" />
</section>
</div>
</div>
<form asp-action="DeletePostAsync">
<input type="hidden" asp-for="Id" />
<button type="submit" class="btn btn-outline-danger">Delete</button>
</form>
<a href="@Url.Action("GetAllPosts", "Post")" class="btn btn-outline-secondary">Cancel</a>
</div>
Маршрутизация:-
app.UseMvc(routes =>
{ routes.MapRoute(
name: "KtsPost",
template: "{controller}/{action}/{id?}",
defaults: new { controller = "Post", action = "Index" },
constraints: new { id = "[0-9]+" });
});