Ich habe eine generierte Ansicht mit einer Liste von "zu tun, Elemente" Ich versuche, die Delete-Methode für den generierten Link zu löschen. Ich habe einen ListController erstellt, der bereits das Hinzufügen zur Listendatenbank behandelt. Jetzt versuche ich die Liste zu löschen. hier ist mein ListController:Die Delete-Methode funktioniert nicht. Ich habe versucht, zu debuggen und es scheint nicht sogar zu der Methode
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MyBasicListApp2.Models.DB;
using MyBasicListApp2.Models.EntityManager;
using System.Data.Entity;
namespace MyBasicListApp2.Controllers
{
public class ListController : Controller
{
// GET: List
public ActionResult Index()
{
return View();
}
// First I create a todolist action that is used to receive the default ToDoList page
// Second I create a post todolist action for submitting form info on the page.
// In the method I check to see if the filled out viewmodel contains valid model data state
// If data is valid then I create a EntityManager object (contains logic method) so I can use
// the addtolist method I made in the ListManager (EntityManager).
// Next I will authenticate the form and seth an auth cookie for incase the current session does
// not include cookies.
public ActionResult ToDoList()
{
return View();
}
// In the post I pass in the viewmodel that the view will use to collect information
[HttpPost]
public ActionResult ToDoList(tblBasicList LVM)
{
if (ModelState.IsValid)
{
ListManager LM = new ListManager();
// Addtolist is a method belonging to ListManager and can only be called if ListManager
// object is created in the current context.
LM.AddToList(LVM);
return RedirectToAction("MyToDoList", "Home");
}
return View();
}
// Delete method
// First create the actionresult for the edit call
// Get method
public ActionResult Delete()
{
return View();
}
[HttpPost]
public ActionResult Delete(int BasicListID)
{
using (MyBasicListAppEntities db = new MyBasicListAppEntities())
{
ListManager LM = new ListManager();
LM.Remove(BasicListID);
return RedirectToAction("MyToDoList", "Home");
}
}
}
}
Ich habe eine eigene Klasse mein Entity Framework Methoden für Add Handhabung und löschen:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MyBasicListApp2.Models.DB;
namespace MyBasicListApp2.Models.EntityManager
{
public class ListManager
{
public void AddToList(tblBasicList LVM)
{
using (MyBasicListAppEntities db = new MyBasicListAppEntities())
{
tblBasicList TBL = new tblBasicList();
TBL.InputDate = LVM.InputDate;
TBL.InputItem = LVM.InputItem;
TBL.InputImportance = LVM.InputImportance;
TBL.ItemCompletion = LVM.ItemCompletion;
db.tblBasicLists.Add(TBL);
db.SaveChanges();
}
}
public void Remove(int id)
{
MyBasicListAppEntities db = new MyBasicListAppEntities();
tblBasicList objDelete = db.tblBasicLists.Find(id);
db.tblBasicLists.Remove(objDelete);
db.SaveChanges();
}
}
}
ich von der "MyToDoList.cshtml" Ansicht starten:
@model IEnumerable<MyBasicListApp2.Models.DB.tblBasicList>
@{
ViewBag.Title = "MyToDoList";
}
<h2>MyToDoList</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.InputDate)
</th>
<th>
@Html.DisplayNameFor(model => model.InputItem)
</th>
<th>
@Html.DisplayNameFor(model => model.InputImportance)
</th>
<th>
@Html.DisplayNameFor(model => model.ItemCompletion)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.InputDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.InputItem)
</td>
<td>
@Html.DisplayFor(modelItem => item.InputImportance)
</td>
<td>
@Html.DisplayFor(modelItem => item.ItemCompletion)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.BasicListID }) |
@Html.ActionLink("Details", "Details", new { id=item.BasicListID }) |
@Html.ActionLink("Delete", "Delete", "List", new { id=item.BasicListID })
</td>
</tr>
}
</table>
Von hier aus wähle ich eines der Elemente aus der Liste (ich habe etwa 6 drin. Die Add-Methode funktioniert perfekt). Aber wenn ich auf die Schaltfläche Löschen klicke, erhalte ich den Fehler "Ressource nicht gefunden". Es wird nicht einmal auf die Delete-Ansicht umgeleitet, was mir schwer fällt herauszufinden, warum. Ziel ist es, auf die Löschseite zu verweisen, für das ausgewählte Element auf Löschen zu klicken und dann zur Seite "MyToDoList" zurückgeleitet zu werden. Irgendwelche Ideen?
Ok also eine neue Überladung zum Aktionslink hinzufügen: @ Html.ActionLink ("Löschen", "Löschen", "Liste", neu {id = item.BasicListID}, neu {}) Es leitet jetzt zum Löschen Aussicht. Aber damit werden keine Daten übertragen. und wenn ich delete hole, bekomme ich ein Das Parameterwörterbuch enthält einen Nulleintrag für den Parameter 'BasicListID' des Typs 'System.Int32', der keinen Nullwert hat. – Devon