2009-11-25 40 views
5

Ok, tengo un sistema de permiso basado en roles y me gustaría que los administradores puedan editar los permisos para cada función. Para hacer esto, necesito cargar muchas casillas de verificación; sin embargo, estoy luchando para obtener los datos de devolución de la VistaASP.Net MVC - Maneje múltiples casillas de verificación

Nota: He visto alrededor, he encontrado preguntas similares pero aún no puedo encontrar una solución.

<% 
    Html.BeginForm(); 

    string lastGroup = ""; 
    foreach (var CurPermission in Model) 
    { 

%> 
     <%=Html.CheckBox("Permissions", CurPermission.Checked, new { ID = CurPermission.PermissionId}) + " " + CurPermission.PermissionValue%> 

     <br /> 
<% 
    } 
    %> 
     <input type="submit" value="Submit" /> 
    <% 
    Html.EndForm(); 
%> 

y el controlador,

[AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult EditPermissions(String[] Permissions) 
     { 
      foreach (var CurPermission in Permissions) 
      { 
       Debug.WriteLine(CurPermission); 
      } 

      return View(); 
     } 

Obviamente necesito saber qué cajas no se comprueban, así como los que son. Pero en los valores de retorno debido a la totalidad ("verdadero, falso") no puedo determinar qué valor se relaciona con qué casilla de verificación.

Cualquier sugerencia en cuanto a una solución o quizás se apruebe un método alternativo.

Respuesta

11

Aquí hay algunos fragmentos de código que usamos para asignar miembros a un proyecto, ¡espero que esto lo ayude!

En la vista tenemos:

<p> 
    <label> 
     Select project members:</label> 
    <ul> 
     <% foreach (var user in this.Model.Users) 
      { %> 
     <li> 
      <%= this.Html.CheckBox("Member" + user.UserId, this.Model.Project.IsUserInMembers(user.UserId)) %><label 
       for="Member<%= user.UserId %>" class="inline"><%= user.Name%></label></li> 
     <% } %></ul> 
</p> 

En el controlador que tenemos:

// update project members 
foreach (var key in collection.Keys)  
{ 
    if (key.ToString().StartsWith("Member")) 
    { 
     int userId = int.Parse(key.ToString().Replace("Member", "")); 
     if (collection[key.ToString()].Contains("true"))  
      this.ProjectRepository.AddMemberToProject(id, userId); 
     else 
         this.ProjectRepository.DeleteMemberFromProject(id, userId); 
    } 
} 

Lo principal a tener en cuenta cuando se trabaja con el código HTML Casilla ayudante deben utilizar contains() para determinar verdadero o falso.

+0

Simple y al grano - gracias. – LiamB

+0

¿Cómo implementaría IsUserInMembers dentro del modelo de vista? –

Cuestiones relacionadas