Операция удаления не активирует / не запускает ASP.NET Core MVC - PullRequest
0 голосов
/ 05 февраля 2019

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]+" });
      });

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Ваше имя действия неверно в форме.Ваш код должен быть вместо:

<form asp-action="DeletePost"> 
    <input type="hidden" asp-for="Id" />
    <button type="submit" class="btn btn-outline-danger">Delete</button>
</form>
0 голосов
/ 05 февраля 2019

Метод HTML-формы по умолчанию - GET, а не POST.Вы должны сообщить свою форму на POST.Также имя действия должно быть ConfirmDelete:

<form asp-action="ConfirmDelete" method="post"> 
    <input type="hidden" asp-for="Id" />
    <button type="submit" class="btn btn-outline-danger">Delete</button>
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...