2009-11-25 4 views
5

나는 역할 기반 권한 시스템을 가지고 있으며 관리자가 각 역할에 대한 권한을 편집 할 수 있기를 바랍니다. 이렇게하려면 체크 박스를 많이로드해야하지만보기에서 반환 데이터를 얻는 데 어려움이 있습니다.ASP.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> 

은 우리가 다음 HTML을 체크 박스 도우미로 작업 할 때

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

중요한 것은 기억하는() 결정하기 위해 포함 사용하는 것입니다 true 또는 false.

+0

간단하고 핵심 - 감사합니다. – LiamB

+0

뷰 모델에서 IsUserInMembers를 어떻게 구현합니까? –

0

SO를 확인하려면 this 항목을 확인하십시오.

관련 문제