Как разработать функцию для удаления элемента на странице по умолчанию непосредственно с asp.net mvc - PullRequest
0 голосов
/ 25 октября 2019

Я новичок в asp.net MVC и изучаю некоторые примеры кода.

Я ссылаюсь на образец из https://github.com/LaunchCodeEducation/cheese-mvc.

И я хочу добавить новое действие и представлениедля примера. Например, добавить ссылку / кнопку удаления, чтобы удалить сыр с сыра / индексной страницы напрямую:

enter image description here

Но, похоже, что-то не так с SingleRemoveдействие и вид я написал. Действие, которое я использую, как показано ниже:

    [HttpGet]
    public IActionResult SingleRemove()
    {
        ViewBag.cheeses = context.Cheeses.ToList();
        return View();
    }

    [HttpPost]
    public IActionResult SingleRemove(int cheeseId)
    {
        Cheese theCheese = context.Cheeses.Single(c => c.ID == cheeseId);
        //context.Cheeses.Remove(theCheese);
        //context.SaveChanges();
        return View(theCheese);
    }

И представление, которое я использую как:

@model CheeseMVC.Models.Cheese

<h1>Going to be removed cheese information as below</h1>

<form >
    <ul>
        <li>Cheese ID: @Model.ID</li>
        <li>Cheese Name: @Model.Name</li>
        <li>Cheese Type: @Model.Type</li>
        <li>Cheese Description: @Model.Description</li>

    </ul>

    <input type="submit" value="Remove Selected Cheese" />
</form>

Не могли бы вы подсказать, как правильно установить действие и модель?

А как разрешить всплывающему окну двойное подтверждение удаления на сыр?

1 Ответ

0 голосов
/ 25 октября 2019

Если вы создадите контроллер и выберете «Контроллер с представлениями, используя Entity Framework», он создаст все это для вас на основе вашей модели. Затем вы могли бы вернуться и сделать это с помощью ccs, чтобы использовать кнопки вместо ссылок и т. Д. Я не уверен, что ваше мнение делает в приведенном выше коде. Ваше мнение должно быть

    <table class="table table-bordered">
       <thead>
          <tr>
             <th>Name</th>
              <th>Email</th>
              <th>Description</th>
              <th></th>
          </tr>
       </thead>
    foreach (var item in Model)
    {
    <tr>
      <td>@Html.DisplayFor(modelItem => item.Name)</td>
      <td>@Html.DisplayFor(modelItem => item.Type)</td>
      <td>@Html.DisplayFor(modelItem => item.Description)</td>
      <td>

      @using (Html.BeginForm("Delete", "controller name goes here", FormMethod.Post))
      {
        @Html.AntiForgeryToken()
        <input type="hidden" id="id" value="@item.ID" />
        <input onclick="return confirm('Are you sure you want to delete the Cheese?');" type="submit" value="Delete" class="btn btn-primary " />
      }

       </td>
    </tr>
   }
  </table>

Тогда в вашем контроллере у вас будет что-то вроде этого:

    public ActionResult Delete(int? ID)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        Cheese cheese = db.Cheese.Find(id);
        if (cheese == null)
        {
            return HttpNotFound();
        }
        return View(Index);
    }

    [HttpPost, ActionName("Delete")]
    [ValidateAntiForgeryToken]
    public ActionResult Delete(int ID)
    {
        var cheese = db.cheese.Find(id);
        if (cheese != null)
        {
            Cheese cheese = db.Cheese.Find(id);
            db.Cheese.Remove(cheese);
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return RedirectToAction("Index", "Cheese");
    }

Убедитесь, что вы используете:

   using System.Data.Entity;
   using System.Linq;
   using System.Net;

А такжене знаю, какой у вас контекст, но вот откуда взялся db.Cheese:

  private ApplicationDbContext db = new ApplicationDbContext();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...