2009-11-25 13 views
5

Ok, ich habe ein rollenbasiertes Berechtigungssystem installiert und möchte, dass Administratoren die Berechtigungen für jede Rolle bearbeiten können. Um dies zu tun, muss ich viele Checkboxen laden, aber ich habe Schwierigkeiten mit der Rückkehr der Daten aus der AnsichtASP.Net MVC - Behandle mehrere Checkboxen

Bitte beachten Sie: Ich habe mich umgesehen, ich habe ähnliche Fragen gefunden, aber bis jetzt kann keine Lösung finden.

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

und der Controller,

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

      return View(); 
     } 

Offensichtlich muss ich wissen, welche Boxen nicht so gut wie die, die überprüft werden, die sind. Aber in den Rückgabewerten wegen des Ganzen ("wahr, falsch") kann ich nicht herausfinden, welcher Wert sich auf welche Checkbox bezieht.

Irgendwelche Vorschläge bezüglich einer Reparatur oder vielleicht eine alternative Methode würden geschätzt werden.

Antwort

11

Hier sind einige Codeschnipsel, die wir verwenden, um Mitglieder einem Projekt zuzuweisen, hoffentlich hilft Ihnen das weiter!

Aus Sicht haben wir:

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

In der Steuerung haben wir:

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

Die wichtigste Sache zu erinnern, wenn es mit dem HTML-Checkbox Helper arbeitet enthält() verwenden, um zu bestimmen, richtig oder falsch.

+0

Einfach und auf den Punkt - danke. – LiamB

+0

Wie würde man IsUserInMembers innerhalb des View-Modells implementieren? –

Verwandte Themen