2012-07-27 3 views
0

J'ai trouvé beaucoup de messages à ce sujet, mais aucun d'entre eux ne résout mon problème. Mon code en ce moment:La valeur ne peut pas être nulle. Nom du paramètre: source dans la liste de contrôle MVC

@Html.ListBox("SelectedNewsletter", Model.Newsletters) 

et

public MultiSelectList Newsletters 
{ 
    get 
    { 

      return new MultiSelectList(
      new[] 
      { 
       // TODO: Fetch from your repository 
       new { Id = 1, Name = "item 1" }, 
       new { Id = 2, Name = "item 2" }, 
       new { Id = 3, Name = "item 3" }, 
      }, 
      "Id", 
      "Name" 
       ); 

     //  return new MultiSelectList(PromoNewsletter.All, "IdString", "Display"); 
    } 
} 

Pour autant que je peux voir, tout cela est codé en dur maintenant, et il donne toujours la même erreur. Je veux faire un ListboxFor, mais j'essaye juste d'obtenir une liste de sélection pour fonctionner. J'ai remplacé mon int id par une représentation sous forme de chaîne, sur la base des conseils que j'ai trouvés ailleurs, mais maintenant je ne vois pas ce que je peux faire d'autre. Il ne fonctionne tout simplement pas, même avec toutes les valeurs codées en dur et ne pas se lier à une propriété sur mon ViewModel. Où vais-je mal?

+0

Pouvez-vous coller le code où vous chargez 'ViewBag' /' ViewData' avec votre 'MultiSelectList'? – Mohayemin

+0

C'est dans mon modèle, vous regardez le code – cgraus

Répondre

3

L'erreur se produit parce que vous avez une propriété dans le modèle ou ViewData/ViewBag avec le nom SelectedNewsletter. Donnez un nom différent au ListBox si vous ne pouvez pas renommer cette propriété.

MISE À JOUR:

Après un peu plus expérimenter je me suis dit que le problème est que vous pouvez installerez une valeur entière à la SelectedNewsletter qui est quelque part dans le ViewData/ViewBag ou Modèle.

Vous pouvez définir les valeurs à sélectionner dans la zone de liste comme une chaîne ou un tableau de chaînes au SelectedNewsletter.

-à-dire SelectedNewsletter = "1";

ou

SelectedNewsletter = new[] { "1", "3" }; 

Vous pouvez également utiliser aide fortement typé pour rendre les choses faciles,

@Html.ListBoxFor(m => m.SelectedNewsletter, Model.NewsLetters); 
+0

OK - la raison en est que je veux lier à cette propriété. Je viens de définir le nom pour essayer d'éviter la liaison et voir si cela fonctionnait toujours. – cgraus

+0

OK, j'ai ajouté un tout nouveau paramètre, et cela a fonctionné. Je ne suis pas sûr maintenant comment je vais me lier à un paramètre réel, cependant? C'est ce que j'ai commencé avec, c'était une version simplifiée pour essayer d'obtenir quelque chose qui a fonctionné, ou un message d'erreur significatif. J'ai même mis en place pour voir où il s'est cassé dans le code .NET, mais il ne m'a rien montré d'utile. – cgraus

+0

@cgraus voir ma réponse mise à jour pour savoir comment définir les valeurs sélectionnées dans la liste déroulante – VJAI

Questions connexes