web-dev-qa-db-fra.com

Comment utiliser la sélection multiple dans MVC 4?

Je veux utiliser la sélection multiple dans Choisi . J'ai un modèle de compétence comme,

public class Skill 
    {
        public int Id { get; set; }
        public string Name { get; set; }        
    }

Cela fonctionne dans mon application:

    <select data-placeholder="Choose a Country..." class="chzn-select" multiple >
           <option value=""></option>
           <option value="United States">United States</option>
           <option value="Albania">Albania</option>
           <option value="Algeria">Algeria</option>
   </select>

Je souhaite remplacer les données des pays par mes données. Dans le contrôleur j'écris:

        var list = MyService.LoadAllSkills();
        ViewBag.Skills = new MultiSelectList(list, "Id", "Name");

En vue:

@Html.ListBox("Name", ViewBag.Skills as MultiSelectList,
              new { @class = "chzn-select" } )

Afficher le résultat de @ Html.ListBox () et @ Html.DropDownList () N'est pas comme <select>

J'obtiens donc le résultat:

enter image description here

Mais je veux obtenir le résultat

enter image description here

Comment puis-je changer l'échantillon choisi?

18
Jeyhun Rahimov

La seule différence que je peux voir entre l'exemple codé en dur (dont vous avez dit qu'il fonctionne) et celui que vous générez avec l'aide ListBox est l'absence de data-placeholder attribut. Alors:

@Html.ListBox(
    "Countries", 
    ViewBag.Skills as MultiSelectList,
    new { @class = "chzn-select", data_placeholder = "Choose a Country..." } 
)

Cela devrait au moins générer le même balisage que ce que vous avez dit fonctionne. Si cela ne fonctionne pas, vous n'avez probablement pas configuré correctement le plugin ou vous avez d'autres erreurs javascript. Lisez la documentation du plugin sur la façon dont il doit être configuré.

14
Darin Dimitrov

comme d'autres types l'ont mentionné, il semble que la cause de votre problème ne soit pas côté serveur (rasoir), c'est en fait côté client (très probablement l'initialisation de votre plugin Jquery).

probablement lorsque l'initialisation du plugin appelé DOM html n'est pas encore générée, placez votre script d'initialisation du plugin à la fin du corps ou à l'intérieur de $(document).ready() et n'oubliez pas de jeter un œil à la console pour voir s'il y a est des erreurs

codage heureux

0
Code_Worm