Если вы создадите контроллер и выберете «Контроллер с представлениями, используя 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();