J'essaie d'alimenter une liste déroulante à partir d'une base de données mappée avec Linq-2-SQL, en utilisant ASP.NET MVC 2, et je continue à obtenir cette erreur.
Je suis tellement confus parce que je déclare une variable de type IEnumerable<SelectListItem>
sur la deuxième ligne, mais l'erreur me fait penser que ce n'est pas le cas. J'ai l'impression que cela devrait être très simple, mais je me débats. Toute aide est la bienvenue.
Voici les éléments intéressants de mon contrôleur :
public ActionResult Create()
{
var db = new DB();
IEnumerable<SelectListItem> basetypes = db.Basetypes.Select(
b => new SelectListItem { Value = b.basetype, Text = b.basetype });
ViewData["basetype"] = basetypes;
return View();
}
Et voici les éléments intéressants de mon point de vue :
<div class="editor-label">
<%: Html.LabelFor(model => model.basetype) %>
</div>
<div class="editor-field">
<%: Html.DropDownList("basetype") %>
<%: Html.ValidationMessageFor(model => model.basetype) %>
</div>
Voici l'action POST lors de la soumission du formulaire
// POST: /Meals/Create
[HttpPost]
public ActionResult Create(Meal meal)
{
if (ModelState.IsValid)
{
try
{
// TODO: Add insert logic here
var db = new DB();
db.Meals.InsertOnSubmit(meal);
db.SubmitChanges();
return RedirectToAction("Index");
}
catch
{
return View(meal);
}
}
else
{
return View(meal);
}
}
Merci.
1 votes
La liste déroulante apparaît très bien dans la vue. Elle se remplit à partir de la base de données comme il se doit, mais c'est lorsque je publie le formulaire que j'obtiens ces erreurs.
8 votes
Résumé de la réponse acceptée : Assurez-vous que vous remplissez la liste dans les actions get et post de votre contrôleur. Il est facile d'oublier de le faire, et de perdre du temps à chercher un bogue plus compliqué.