2012-12-08 15 views
16

Chcę użyć wielu opcji wyboru w Chosen. Mam modelu Skill podobny,Jak korzystać z wielokrotnego wyboru w mvc 4?

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

Działa to w mojej aplikacji:

<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> 

chcę zastąpić danych krajów, z moimi danymi. W kontrolerze napisać:

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

w widoku:

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

Zobacz wynikiem @ Html.ListBox() i @ Html.DropDownList() się nie podoba <select>

Otrzymuję wynik:

enter image description here

Ale chcę, aby spowodować jak

enter image description here

Jak mogę zmienić Wybrana próbkę?

+0

wypróbuj dowolną wtyczkę jQuery dla tego. –

+0

@Kundan Singh Chouhan, czy możesz udostępnić dowolny inny link? dla innych wtyczek –

Odpowiedz

12

Jedyna różnica, jaką widzę pomiędzy przyklejonym przykładem (który podałem, że działa) a tym, który wygenerowałeś za pomocą pomocnika ListBox, to brak atrybutu data-placeholder. A więc:

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

Powinno to przynajmniej generować takie same znaczniki, jak to, co powiedziałeś, że działa. Jeśli to nie zadziała, prawdopodobnie nie ustawiłeś wtyczki poprawnie lub masz inne błędy javascript. Przeczytaj dokumentację wtyczki na temat konfiguracji.

+0

nieznany atrybut zastępczy danych. i data_placeholder nie działa. –

+2

Wtedy prawdopodobnie masz inny problem z ustawianiem wtyczki, która nie ma nic wspólnego z ASP.NET MVC. Jeśli chodzi o kod po stronie serwera, powinien on generować dokładnie równoważny znacznik do tego, co pokazałeś w swoim pytaniu. Zauważ również, że podczas używania 'datownik_danych' po stronie serwera, pomocnik automatycznie przekonwertuje to na' element zastępczy danych' podczas generowania odpowiedniego atrybutu. –

0

jak wspomnieli inni koledzy, wygląda na to, że przyczyną problemu nie jest serwer (brzytwa), to w rzeczywistości strona klienta (najprawdopodobniej inicjalizacja wtyczki Jquery).

prawdopodobnie, gdy inicjalizacja wtyczki nazywa się DOM HTML nie jest jeszcze wygenerowana, umieść skrypt inicjujący wtyczkę na końcu ciała lub wewnątrz $(document).ready() i nie zapomnij spojrzeć na konsolę, aby sprawdzić, czy jest jakiś błędy

szczęśliwe kodowanie

Powiązane problemy