2008-10-14 13 views
19

¿Por qué se ha eliminado CheckBoxList de la versión preliminar ASP.NET MVC versión 5?¿Por qué se elimina? ASP.NET MVC CheckBoxList (sin MVCContrib)

Actualmente no veo ninguna manera de crear una lista de casillas de verificación (con nombres similares pero con identificaciones diferentes) para que las personas puedan seleccionar 0-1-más opciones de la lista.

Hay una lista CheckBoxList presente en la biblioteca MVCContrib, pero está en desuso. Puedo entender esto para los otros HtmlHelpers, pero no parece haber un reemplazo para el CheckBoxList en la vista previa 5.

Me gustaría crear una lista muy simple como la que ve a continuación, pero ¿cuál es la mejor manera de hacer esto usando ASP.NET MVC preview release 5?

<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

puede usar la de aquí: http://awesome.codeplex.com – Omu

+0

Relacionado: * [Mantener el estado de una lista dinámica de casillas de verificación en ASP.NET MVC] (http://stackoverflow.com/questions/ 3291501) * –

+0

Para la solución más limpia y sin problemas, [una respuesta a la pregunta de desbordamiento de pila * Mantener el estado de una lista dinámica de casillas de verificación en ASP.NET MVC *] (http://stackoverflow.com/questions/3291501/asp- net-mvc-maintain-state-of-a-dynamic-list-of-checkboxes/3298821 # 3298821) funciona bien. Estoy de acuerdo con la primera respuesta, no tocaría 'Html.CheckBox'. Crea más problemas de los que soluciona. – Aaron

Respuesta

19

Un bucle en el fin de generar las casillas de verificación

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

No utilice Html.Checkbox, ya que generará dos valores para cada elemento de la lista (ya que utiliza un campo oculto para valores falsos)

+0

Recibo un error mientras esto no puede convertir ViewData en listas genéricas (Lista) ... ¿por qué debería hacerlo? –

0

Recomiendo usar JeremiahClark extensión publicada anteriormente. (CheckBoxList)

Mi controlador resultó en instrucciones muy simples. Para aclarar, agrego un fragmento de mi código que está ausente en la muestra.

 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; 

Y en la vista:

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

eso es todo.

1

Tengo mi propia implementación de CheckListBox que tiene soporte para ModelState. Si te interesa está en Un CheckBoxList que funciona en ASP.NET MVC. La publicación está en español, pero no debería tener problemas para leer el código.

Lo que es interesante en la solución de Jeremiah es el hecho de que puede establecer el estado inicial de las casillas de verificación, algo que no puede hacer con mi CheckListBox.

Cuestiones relacionadas