2014-10-04 4 views
0

MVC의 체크 박스 목록을 통해 직원 역할을 편집하고 싶습니다.목록의 값이 다른 IList에 없는지 확인하는 방법

  1. 이미 역할이있는 경우 아무 것도하지 마십시오.
  2. 아직 역할이없는 경우 추가하십시오.
  3. 이미 역할이 있지만 선택이 취소 된 경우 제거하십시오.

세 번째 논리를 이해할 수 없습니다. 나는 기존 역할의 IList와 true로 설정된 역할 목록을 가지고있다.

 for (int i = 0; i < selectedRoles.Count(); i++) 
     { 
      var employeeRole = new EmployeeRole 
      { 
       EmployeeID = vm.EmployeeID, 
       RoleID= Int32.Parse(postedRoleIds[i]) 
      }; 

      if (vm.ExistingRoles.Contains(selectedRoles[i])) 
      { 

      } 
      else 
      { 
       db.EmployeeRoles.Add(employeeRole); 
      } 


     } 

사람이 내가 데이터베이스의 역할을 제거해야하는 경우 IF 문이 확인을 위해 올바른 방향으로 날 포인트?

감사합니다.

역할 역할이 삭제 될, 추가 할 - 단순 들어

+1

위의 VM은 무엇입니까? – ArunGeorge

+0

VM은 ExistingRoles의 IList를 포함하고있는 ViewModel입니다. – user2325484

답변

1

,이 일에 대해 갈 수있는 가장 좋은 방법은 두 개의 별도의 목록을 얻을 수 있습니다. 따라서 논리는 다음과 같아야합니다.

IList<Role> rolesToBeAdded = new List<Role>(); 
    IList<Role> rolesToBeDeleted = new List<Role>(); 

    foreach(Role role in existingRoles) 
    { 
     if(! selectedRoles.contains(role)) 
     rolesToBeDeleted.Add(role); 
    } 

    foreach(Role role in selectedRoles) 
    { 
     if(! existingRoles.contains(role)) 
     rolesToBeAdded.Add(role); 
    } 

그런 다음 rolesToBeAdded에서 역할을 추가하고 rolesToBeDeleted에서 역할을 삭제하십시오.

엔터프라이즈 수준 솔루션에서이 작업을 수행하는 경우 뷰 모델 등에서 바로 작업하지 않아도됩니다. 기존 및 새로 선택된 역할 목록을 추출하여 비즈니스 논리 DLL에 전달할 수 있습니다 그 주위의 비즈니스 로직을 처리합니다. 이 모든 것을 컨트롤러와 뷰 로직에 넣으면 나중에이를 유지하는 데 어려움을 겪을 수 있습니다.

관련 문제