2015-11-16 1 views
0

Comment puis-je définir la propriété selectedValue d'un SelectListSelectList valeurs sélectionnées ne pas attribuer à partir d'un tableau d'entiers

var attributeSet = attribute.AttributeSetAttributes.Where(c => c.AttributeSetID == id).Select(c => c.AttributeID).ToArray(); 

    var attributeList = new SelectList(db.CatAttributes.Where(c => c.IsActive), "ID", "FullName", attributeSet); 
    ViewBag.AttributesList = attributeList; 

et Vues je l'ai utilisé comme

@Html.ListBoxFor(model => model.Attributes, (SelectList)ViewBag.AttributesList, new { @class = "form-control" }) 

Dans ci-dessus attributeSet obtenir integer Si je ne donne qu'une seule valeur, elle affiche la propriété sélectionnée = true, mais lorsque je passe un tableau ou une liste, elle ne définit pas la propriété sélectionnée = true.

+3

Utilisez 'MultiSelectList', mais il n'est pas vraiment nécessaire d'ajouter le dernier paramètre si vous liez une propriété -' @ Html.ListBoxFor (m => m.attributeSet. Model.attributeList) 'parce que c'est la valeur de la propriété qui détermine ce qui est sélectionné (le dernier paramètre est simplement ignoré) –

+0

Afficher votre modèle et vue –

+0

@StephenMuecke voir mon édition –

Répondre

0

donc je l'ai fixé, j'ai utilisé MultiSelectList au lieu de SelectList, et adopté en troisième paramètre comme un tableau

var attributeSet = attribute.AttributeSetAttributes.Where(c => c.AttributeSetID == id).Select(c => c.AttributeID).ToArray(); 

var attributeList = new MultiSelectList(db.CatAttributes.Where(c => c.IsActive), "ID", "FullName"); 
ViewBag.AttributesList = attributeList; 

var model = new AttributeSetViewModel() 
     { 
      AttributeSet = attribute, Attributes = attributeSet 
     }; 

et Vues

@Html.ListBoxFor(model => model.Attributes, (MultiSelectList)ViewBag.AttributesList, new { @class = "form-control" }) 

Ceci définit ma propriété sélectionnée = true.

Merci @Stephen Muecke pour l'idée !!

+1

Comme je l'ai noté, c'est inutile. Utilisez juste 'myModel.Attributes = attributeSet; return View (myModel); 'et supprime le dernier paramètre du constructeur' SelectList' (c'est comme ça que fonctionne la liaison du modèle!) –

+0

oui ça marche aussi !! –