我希望能够通过MVC中的复选框列表编辑员工角色。
我无法弄清楚第三个逻辑。我有一个现有角色的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语句的正确方向检查我是否需要删除数据库中的某个角色?
谢谢!
答案 0 :(得分: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,处理它周围的业务逻辑。将所有这些放在你的控制器中并查看逻辑会在以后维护它时伤害你。