다음 코드가 있습니다. 하지만, 데이터베이스 오류 수를 잘못 입력하면 (1 + (관리 역할을 수행하는 사용자의 수))이를 해결하기 위해 더 효율적인 데이터베이스 방법이 필요합니다.
새로운 MVC 4 프로젝트의 경우 회원 기본값은 UserProfile, webpages_Roles 및 webpages_UsersInRoles 테이블입니다. Roles.Get *에 대한 메소드가 많이 내장되어 있습니다. 아래에있는 코드를 작성하지 않으려면 웹 페이지 _ 롤 (Webpages_Roles) 및 웹 페이지 (Webpages_UsersInRoles)의 모델을 만들고 코드의 첫 번째 속성을 모두 명시해야합니다. Roles.Get에서 사용자 이름을 얻는 것만으로 충분하지 않습니다. 전체 UserProfile이 필요합니다.
FYI 아래의 "UserRole"개체는 열거 형입니다.
public ActionResult Admins()
{
var dbContext = new UsersContext();
var usernames = Roles.GetUsersInRole(UserRole.SiteAdministrator.ToString());
var adminUsers = new List<UserProfile>();
foreach (string username in usernames)
{
var adminUser = dbContext.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == username);
adminUser.Roles.Add(UserRole.SiteAdministrator);
adminUsers.Add(adminUser);
}
return View(adminUsers);
}
그렇습니다. 그런 식으로하고 싶지는 않습니다. 그것은 매우 비효율적 인 방법입니다.
대신 도구를 설계대로 사용하십시오. 예를 들면 다음과 같습니다.
var usernames = Roles.GetUsersInRole(UserRole.SiteAdministrator.ToString());
var adminUsers = dbContext.UserProfiles
.Where(x => usernames.Contains(x.Username)).ToList();
return View(adminUsers);