hat Ich habe alle anderen Fragen zu diesem Problem durchlaufen. Versuchte posted Lösung Dutzende Male, keine funktioniert.Es gibt kein ViewData-Element vom Typ 'IEnumerable <SelectListItem>', das den Schlüssel nach dem Akzeptieren des Formulars
Ich habe zwei Klassen:
public class Player
{
public int Id { get; set; }
[MinLength(1)]
public string Name { get; set; }
[MinLength(4)]
public string LastName { get; set; }
[DataType(DataType.Date)]
public DateTime Birthdate { get; set; }
public virtual Club Club { get; set; }
}
Und
public class Club
{
public int Id { get; set; }
[StringLength(30, MinimumLength = 3)]
[Required]
public string Name { get; set; }
[DataType(DataType.Date)]
public DateTime Founded { get; set; }
public virtual ICollection<Player> Players { get; set; }
public override string ToString() {
return Name;
}
}
Neue Aktionsmethode von Player
ich habe:
// GET: /Players/Create
public ActionResult Create() {
//SelectList selectList = new SelectList(db.Clubs, "Id", "Name");
ViewBag.Clubs = new SelectList(db.Clubs, "Id", "Name");
return View();
}
// POST: /Players/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Id,Name,LastName,Birthdate,Club")] Player player) {
if (ModelState.IsValid) {
db.Players.Add(player);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(player);
}
In Form ich versuche ich Drop-Down-Liste habe für um den Club auszuwählen, in dem der Spieler spielt:
die Dropdown-Liste richtig gemacht, aber wenn ich das Formular Ich akzeptiere gelben Schirm des Todes erhalten sagen: There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key 'Club'.
Dropdown-Liste wie this aussieht.
Da Sie in der POST-Methode die Ansicht zurückgeben und 'ViewBag.Clubs' nicht wie bei der GET-Methode neu zugewiesen haben. Der Betrogene erklärt es (Sie erhalten eine etwas andere Nachricht, weil Sie 'DropDownList()' anstelle von (der bevorzugten) 'DropDownListFor() 'Methode verwenden. –
@StephenMuecke Er benutzt' DropDownListForm()' Ich habe sein Problem repliziert und selbst wenn ich neu zugewiesen 'ViewBag.Clubs' der ausgewählte Wert besteht die Validierung nicht – Yoda
@Yoda, Das ist, weil Sie'