Ce message d'erreur me rend fou.Il n'y a aucun élément ViewData avec la clé 'Blah' de type 'IEnumerable <SelectListItem>'
Je l'obtiens en utilisant Html.ListBox et Html.DropDownList HtmlHelpers avec ASP.NET MVC v1.0. Le remplissage des listes fonctionne bien - je peux les voir, etc - mais quand je vais créer un nouvel enregistrement dans le Modèle en utilisant la FormCollection passée dans le Contrôleur pour obtenir la valeur sélectionnée, cette erreur se produit. J'ai essayé plusieurs configurations différentes et arrangements de code selon plusieurs autres messages sur cette matière - aucune joie.
J'espère que quelqu'un peut me dire si c'est un problème connu ou non, car je peux continuer ma vie! Préférerait ne pas avoir à poster du code si nécessaire, mais peut le faire si demandé.
Oh, et une solution proposée/solution serait bien trop ;-)
TIA!
Bernard. Ok, mise à jour rapide, j'ai posté trois commentaires aux réponses ci-dessous éclaircissant les détails de ce que je suis en place ici.
J'ai maintenant un autre problème à partager - J'ai essayé l'approche alternative recommandée par ScottGu - l'implémentation d'un ModelView. Donc, quand je fais cela, c'est fondamentalement le même scénario, mais je reçois une "Référence d'objet non définie sur une instance d'un objet". erreur au même endroit que je recevais "Il n'y a aucun élément ViewData avec la clé 'Blah' de type 'IEnumerable'.".
Je commence à la chose que c'est peut-être quelque chose à voir avec la façon dont fonctionne EF ...
Pouvez-vous écrire votre méthode d'action? –
// POST:/Travail/Créer [AcceptVerbs (HttpVerbs.Post)] public ActionResult Créer (collection FormCollection) {{ essayer // obtenir les variables prêt int ID de tâche, taskID; int.TryParse (collection ["Travaux"], out jobID); int.TryParse (collection ["Tâches"], out taskID); // configuration de l'objet métier var work = new Work(); work.Comment = collection ["Commentaire"]; work.Job = dataSourceJob.GetJob (ID_travail); work.Task = dataSourceTask.GetTask (ID_tâche); // mettre à jour la base de données et renvoyer dataSourceWork.Add (travail); return RedirectToAction ("Index"); } catch { return(); } } – Bernard
Oh, ça a l'air vraiment méchant. Désolé mate - j'espère que vous pouvez démêler ce code! – Bernard