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.
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) –
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() ') –