2008-10-14 10 views
19

Dlaczego CheckBoxList usunięty z ASP.NET MVC podglądu wersji 5?Dlaczego jest usuwany: CheckBoxList ASP.NET MVC (bez MvcContrib)

Obecnie nie widzę żadnego sposobu, w jaki sposób można utworzyć listę wyboru (o podobnych nazwach, ale różne identyfikatory), więc ludzie mogą wybrać 0-1-więcej opcji z listy.

Jest CheckBoxList lista obecny w bibliotece MvcContrib, ale jest przestarzała. Rozumiem to dla innych HtmlHelpers, ale nie wydaje się być zamiennikiem dla CheckBoxList w podglądzie 5.

Chciałbym stworzyć bardzo prostą listę, jak widać poniżej, ale jaki jest najlepszy sposób zrobić to za pomocą wersji 5 podglądu ASP.NET MVC?

<INPUT TYPE="checkbox" NAME="Inhoud" VALUE="goed"> goed 
<INPUT TYPE="checkbox" NAME="Inhoud" VALUE="redelijk"> redelijk 
<INPUT TYPE="checkbox" NAME="Inhoud" VALUE="matig"> matig 
<INPUT TYPE="checkbox" NAME="Inhoud" VALUE="slecht"> slecht 
+0

możesz użyć tego z: http://awesome.codeplex.com – Omu

+0

Powiązane: * [Zachowaj stan dynamicznej listy pól wyboru w ASP.NET MVC] (http://stackoverflow.com/questions/ 3291501) * –

+0

Dla najczystszego, bezproblemowego rozwiązania, [odpowiedź na pytanie dotyczące przepełnienia stosu * Utrzymanie stanu dynamicznej listy pól wyboru w ASP.NET MVC *] (http://stackoverflow.com/questions/3291501/asp- net-mvc-maintain-state-of-a-dynamic-list-of-checkboxes/3298821 # 3298821) działa dobrze. Zgadzam się również z pierwszą odpowiedzią, nie dotknąłbym 'Html.CheckBox'. Tworzy więcej problemów niż rozwiązuje. – Aaron

Odpowiedz

19

A dla pętli w celu generowania pola wyboru

<% foreach(Inhoud i in ViewData["InhoudList"] as List<Inhoud>) { %> 
    <input type="checkbox" name="Inhoud" value="<%= i.name %>" checked="checked" /> <%= i.name %> 
<% } %> 

Nie używaj Html.Checkbox, jako że wygeneruje dwie wartości dla każdej pozycji na liście (ponieważ wykorzystuje ukryte wejście do fałszywe wartości)

+0

Otrzymuję komunikat o błędzie, ponieważ nie można przekonwertować danych ViewData na ogólne listy (lista) ... dlaczego to powinno być? –

0

Polecam używanie rozszerzenia JeremiahClark zamieszczonego powyżej. (CheckBoxList)

Mój kontroler doprowadziły do ​​bardzo prostych instrukcji. Dla wyjaśnienia dodałem fragment mojego kodu, którego nie ma w próbce.

 var rolesList = new List<CheckBoxListInfo>(); 
     foreach (var role in Roles.GetAllRoles()) 
     { 
      rolesList.Add(new CheckBoxListInfo(role, role, Roles.IsUserInRole(user.UserName, role))); 
     } 
     ViewData["roles"] = listaRoles; 

A w widoku:

<div><%= Html.CheckBoxList("roles", ViewData["roles"]) %></div> 

To wszystko.

1

Mam własną implementację CheckListBox, która ma obsługę ModelState. Jeśli jesteś zainteresowany, to jest Un CheckBoxList que funciona en ASP.NET MVC. Post jest w języku hiszpańskim, ale nie powinieneś mieć problemów z odczytaniem kodu.

Co ciekawe w roztworze Jeremiah jest fakt, że można ustawić początkowy stan pola wyboru, coś, czego nie można zrobić z moim CheckListBox.