2016-06-01 2 views
0

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.

+0

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. –

+0

@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

+0

@Yoda, Das ist, weil Sie'