2016-05-29 1 views
-1

Je rencontre un problème avec DropDownList dans MVC, Je peux remplir la liste déroulante sur HTTPGET ie la page d'entrée de données affiche la liste déroulante avec les données appropriées de datatable, mais dès que j'appuie sur le bouton Soumettre MVC me prend sur la ligne Viewer de DropDownList avec l'erreur « Il n'y a aucun élément ViewData de type « IEnumerable » qui a la touche« Banlieue »MVC Il n'y a aucun élément ViewData de type 'IEnumerable <SelectListItem> sur Post Action

Mon modèle est

public class ServiceEntryRegister 
{ 
    public List<ReceiptHeader> HEADER { get; set; } 
    public List<ReceiptDetail> DETAIL { get; set; } 

    public ReceiptHeader SingleHEADER { get; set; } 
    public ReceiptDetail SingleDETAIL { get; set; } 

} 

Contrôleur

[HttpGet] 
    public ActionResult CreateNew() 
    { 

     ServiceEntryRegister Model = new ServiceEntryRegister(); 
     ViewBag.Btype = new SelectList(_er.BodyTypes, "Bodytypeid", "btype"); 
     ViewBag.Engine = new SelectList(_er.EngineTypes, "Enginetypeid", "Engine"); 
     ViewBag.Suburb = new SelectList(_er.Suburbs, "SuburbID", "SuburbName"); 
     ViewBag.VehicleMake = new SelectList(_er.VehicleMakes, "VehicleMakeID", "Make"); 

     return View(); 
    } 


    [HttpPost] 
// [ValidateAntiForgeryToken] 
    public ActionResult CreateNew(ServiceEntryRegister RH) 
    { 
     if (ModelState.IsValid) 
     { 
      CreateBagForLists(); 
      RH.SingleHEADER.ReceiptID = _HC.PrimaryKeyGenerater(); 
      _er.ReceiptHeaders.Add(RH.SingleHEADER); 
      _er.SaveChanges(); 
      return View(); 
     } 
     else 
     { 
      return View(); 
     } 
    } 

La vue est:

<td>@Html.DropDownList("Suburb", String.Empty)</td> 

J'ai aussi essayé:

<td>@Html.DropDownList("Suburb", ViewBag.Suburb as SelectList)</td> 

mais en vain.

+0

Copie possible de [L'élément ViewData ayant la clé 'XXX' est de type 'System.Int32' mais doit être de type 'IEnumerable '] (http://stackoverflow.com/questions/34366305/ the-viewdata-item-that-a-the-key-xxx-is-of-type-system-int32-but-be-o) –

+0

Parce que quand vous POST, 'ModelState' est invalide et vous retournez la vue mais n'a pas réattribué les propriétés 'ViewBag' pour la' SelectList' (référez-vous à la dupe pour la façon correcte de gérer cela - votre message est légèrement différent en raison de l'utilisation terrible de 'DropDownList()' au lieu de 'DropDownListFor() ') –

Répondre

0

Je suggère d'éviter les viewbags et d'utiliser fortement la liste déroulante de type. Dans votre approche, vous devez lier les viewbags dans les deux actions (post et get) pour surmonter cette erreur.

+0

Cher Anupam, Pouvez-vous fournir le code pour lier fortement la vue de la liste que je suis nouveau à MVC. Et je veux confirmer que je le fais de la bonne manière – user3513192

+0

Jetez un oeil: http://stackoverflow.com/a/20420836/1939542 –