2013-07-16 2 views
2

를 볼에 전달 나는 내보기에 이르기까지 그 모델을 모두 전달하고모델 항목의 배열

public ActionResult UsersInRoles() 
    {   
     using (var ctx1 = new UsersModel()) 
     { 
      var model = new UsersInRolesViewModel(); 
      model.UserProfiles = ctx1.UserProfiles.ToList(); 
      model.UserRoles = ctx1.UserRoles.ToList(); 
      return View(model); 
     }    
    } 

컨트롤러에게 있습니다 UserRoles 시스템 내 가능한 모든 역할을 포함합니다. 이제 컨트롤러에 사용자가 등록 된 모든 역할에 대한 배열을 가져 와서 내보기로 전달해야하므로 사용자가 사용할 수있는 역할 상자에 역할을 표시하지 않을 수 있습니다. 이미 등록했습니다.

어떻게하면됩니까?

나는 두 가지 옵션을 참조하십시오

을 일부 통해 역할의 전체 모델을 통과하려고 한 가지, 또는 의 데이터를 얻기 위해 LINQ 문을 사용하는 방법과 사용자가 등록되는 역할의 배열 그런 다음보기에서 하나 또는 등을 표시 할 수 있습니까? Usermodel 관련

AUX 클래스 :

public class UsersModel : DbContext 
{ 
    public UsersModel() 
     : base("name=UsersConnection") 
    {} 
    public DbSet<UserProfile> UserProfiles { get; set; } 
    public DbSet<Roles> UserRoles { get; set; } 
    public DbSet<UsersInRoles> UsersInUserRoles { get; set; } 
} 

public class UsersInRolesViewModel 
{ 
    public IList<UserProfile> UserProfiles { get; set; } 
    public IList<Roles> UserRoles { get; set; } 
    public IList<ut_GMUTempData> GMUTempData { get; set; } 
} 

답변

0

로그인 한 사용자의 역할 만 필요하고 기본 단순 멤버십 Internet Application 템플릿을 사용하면 모델 바인딩이 필요하지 않습니다. 당신의 역할을 검색 할 수있는 다음과 같은보기에 로그인 한 사용자 :

@{ 
    // r will be a string[] array that contains all roles of the current user. 
    var r = Roles.GetRolesForUser();   
} 

을하고 다른 사용자의 역할을 검색 할 경우, 단지 그 방법으로 사용자 이름을 넣어 :

@{ 
    // r will be a string[] array that contains all roles of the entered username. 
    var r = Roles.GetRolesForUser("username"); 
} 

이 경우 모델에 사용자 이름을 보내면됩니다.

그리고 당신은 사용자 ID가 있다면, 당신은 다음과 같이 사용자 이름 검색 할 수 있습니다 :

업데이트

@{ 
    SimpleMembershipProvider provider = new SimpleMembershipProvider(); 
    string uname = provider.GetUserNameFromId(id); 

    // r will be a string[] array that contains all roles of the entered username. 
    var r = Roles.GetRolesForUser(uname); 
} 
+0

내가 두 번째 옵션을 사용할 필요가 있지만, 사용자 ID와 사용자로 사용자 이름이 아닙니다 id는 기본 키입니다. – Zapnologica

+0

귀하의 필요를 해결하기 위해 제 답변을 업데이트했습니다. – AminSaghi

관련 문제