2009-11-25 19 views
5

Ok, ho un sistema di autorizzazione basato sui ruoli e vorrei che l'amministratore sia in grado di modificare le autorizzazioni per ciascun ruolo. Per fare questo ho bisogno di caricare un sacco di caselle di controllo, tuttavia sto cercando di ottenere i dati di ritorno dal ViewASP.Net MVC: gestire più caselle di controllo

Nota: mi sono guardato intorno, ho trovato domande simili ma ancora non riesco a trovare una soluzione.

<% 
    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(); 
%> 

e il controller,

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

      return View(); 
     } 

Ovviamente ho bisogno di sapere quali caselle non vengono controllati, così come quelli che sono. Ma nei valori di ritorno a causa dell'intero ("vero, falso") non riesco a capire quale valore si riferisce a quale casella di controllo.

Qualsiasi suggerimento su una correzione o in alternativa un metodo alternativo sarebbe appropriato.

risposta

11

Ecco alcuni frammenti di codice che utilizziamo per assegnare membri a un progetto, speriamo che questo ti aiuti!

Nella vista abbiamo:

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

Nel controllore abbiamo:

// 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); 
    } 
} 

La cosa più importante da ricordare quando si lavora con l'Html Casella Helper è quello di utilizzare contiene() per determinare vero o falso.

+0

Semplice e preciso - grazie. – LiamB

+0

Come implementare IsUserInMembers nel modello di visualizzazione? –

0

Assicuratevi di controllare l'argomento this su SO.

Problemi correlati