Il n'y a pas de ViewData élément avec la touche 'Blah' de type 'IEnumerable<SelectListItem>'
Ce message d'erreur est me rend fou.
Je suis arriver lors de l'utilisation de Html.ListBox et Html.DropDownList HtmlHelpers avec ASP.NET MVC v1.0. Le remplissage de la listes des œuvres OK - je peux les voir, etc - mais quand je vais pour créer un nouvel enregistrement dans le Modèle à l'aide de la FormCollection passé dans le Contrôleur pour obtenir la valeur sélectionnée, cette erreur se produit. J'ai essayé plusieurs configurations différentes et code d'arrangements que par plusieurs autres postes sur ce sujet - pas de joie.
J'espère que quelqu'un peut me dire si c'est un problème connu ou pas, afin que je puisse avancer dans ma vie! Préférerait ne pas avoir de poste le code si nécessaire, mais peut faire la demande.
Oh, et une suggestion de solution/contournement serait sympa aussi 😉
TIA!
Bernard.
Ok, mise à jour rapide, j'ai posté trois commentaires à partir des réponses de compensation ci-dessous les détails de ce que je suis jusqu'ici.
J'ai maintenant un autre problème à part - j'ai essayé ScottGu de l'alternative recommandée à l'approche mise en œuvre d'un ModelView. Donc, quand je fais cela, c'est essentiellement le même scénario, mais j'obtiens un "Objet de référence non définie à une instance d'un objet." erreur à l'endroit même où je recevais "Il n'y a pas de ViewData élément avec la touche 'Blah' de type 'IEnumerable'.".
Je commence à penser que ce n'est peut-être quelque chose à voir avec la façon dont fonctionne les EF...
// POST: /Travaux/Créer [AcceptVerbs(HttpVerbs.Post)] public ActionResult Créer(FormCollection collection) { try { // récupérer les variables prêt int jobID, taskID; int.TryParse(collection["Emplois"], jobID); int.TryParse(collection["Tâches"], id de la tâche); // configuration de l'objet métier var = nouveau Travail(); travail.Commentaire = collection["Commentaire"]; travail.Job = dataSourceJob.GetJob(jobID); travail.Task = dataSourceTask.GetTask(l'id de la tâche); // mise à jour de la db et de retour dataSourceWork.Ajouter(de travail); return RedirectToAction("Index"); } catch { return View(); } }
Oh, ça a l'air de vraiment méchant. Désolé mate - j'espère que vous pouvez démêler ce code!
OriginalL'auteur Bernard | 2009-05-17
Vous devez vous connecter pour publier un commentaire.
Ok, si je suis clairement un objectif EF/MVC noob...
Bien que le problème a été résolu par mon fait la mise en œuvre de la bonne gestion des exceptions...le message de l'exception (quand j'ai commencé à attraper) était "La relation entre les deux objets ne peuvent pas être définis car ils sont attachés à différents ObjectContext objets.". Donc je suis en utilisant le même ObjectContext pour tous les accès aux données maintenant, et les choses sont sur la bonne voie.
Merci de vous en soucier, je vais avoir une plus intelligente de la question la prochaine fois, promis!!!
Bernard.
OriginalL'auteur Bernard
Ne sachant pas comment vous êtes le codage cela va être difficile pour les gens à identifier la zone problématique. Avoir une lecture de ce fil de discussion du forum - plus bas a une erreur semblable à vous.
http://forums.asp.net/p/1320426/2623986.aspx
L'erreur se produit au "travail.Task = dataSourceTask.GetTask(l'id de la tâche);". Je suis en utilisant Entity Framework. Le Travail et la Tâche des propriétés de la structure de Travail sont EntityReferences. L'bizzare, c'est que tout fonctionne bien jusqu'au moment de l'accident. Mon jobID et taskID variables sont remplies, le travail.Le travail est peuplé d'amende, l'erreur se produit toujours quand je vais faire tout au-delà de remplissage de la première référencé structure (oui, j'ai essayé de manipuler le code pour faire d'autres choses, remplir la Tâche première, etc ... toujours la même erreur). J'espère que vous pouvez aider! Cheers, Bernard.
OriginalL'auteur David
Vous pouvez lier votre liste de sélection dans le selon la méthode post où la validation se produit.
Par exemple, vous avez une erreur à l'intérieur de la vue de créer de la manette que vous pouvez lier de nouveau liste déroulante de créer de la méthode post.
OriginalL'auteur