2009-11-25 2 views
5

Хорошо, у меня есть система разрешений на основе ролей, и мне бы хотелось, чтобы администратор мог редактировать разрешения для каждой роли. Для этого мне нужно загрузить много флажков, однако я борюсь с получением возвращаемых данных из ViewASP.Net MVC - обрабатывать несколько флажков

Обращаем ваше внимание, что я просмотрел, я нашел похожие вопросы, но пока не могу найти решение.

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

и контроллер,

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

      return View(); 
     } 

Очевидно, мне нужно знать, какие коробки не проверяются, а также те, которые. Но в возвращаемых значениях из-за целого («true, false») я не могу определить, какое значение относится к этому флажку.

Любые предложения относительно исправления или предполагаемого альтернативного метода будут назначены.

ответ

11

Вот некоторые фрагменты кода, которые мы используем для назначения участников проекту, надеюсь, это поможет вам!

По мнению мы имеем:

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

В контроллере мы имеем:

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

Главное помнить при работе с Html Checkbox Helper является использование содержит() для определения правда или ложь.

+0

Простой и точный - спасибо. – LiamB

+0

Как реализовать объекты IsUserInMembers в модели представления? –

 Смежные вопросы

  • Нет связанных вопросов^_^