2012-11-27 4 views
0

나는이 목록에 두 개의 추가 항목을 추가하고 싶습니다 내가 그렇게.NET MVC selectList의 여러 소스

PrincipalContext pc = new PrincipalContext(ContextType.Domain, "DOMAIN", "dc=domain,dc=org"); 
GroupPrincipal group = GroupPrincipal.FindByIdentity(pc, "Advisors"); 
ViewBag.EmployeeID = new SelectList(group.Members, "EmployeeID", "DisplayName"); 

처럼 Active Directory에서 검색하고 사용자의 목록을 가지고 있지만 사용자 계정을 만들지 않으 실제 사용자가 아니기 때문에 Active Directory에 저장해야합니다.

public class EmployeeViewModel 
{ 
    public string EmployeeId { get; set; } 
    public string DisplayName { get; set; } 
} 

을 당신이 당신의 ViewModel의 목록에 group.Members 캐스팅 할 수있는 것보다 :

당신은 이런 ViewModel을 가질 수 있습니다, 그것은 가능한 잘

var items1 = new[] 
{ 
    new { EmployeeID = "1", DisplayName = "Independent" }, 
    new { EmployeeID = "2", DisplayName = "Own" } 
}; 

var items = Concat(group.Members, items1); 
{ 
    ViewBag.EmployeeID = new SelectList(items, "EmployeeID", "DisplayName"); 
} 
+0

'group.Members'의 유형은 무엇입니까? 이 유형의 목록으로 캐스트하고,이 목록에 객체를 추가하고이를 'ViewBag'에 바인딩 할 수 있습니다. –

+0

죄송합니다. @Felipe 무슨 뜻인지 확실하지 않습니다. – Stephen

+0

글쎄, 당신은 group.Members를 얻을 수 있고이 목록에이 두 itens를 추가하고 ViewBag에 설정하여 View의 comboBox를 볼 수 있습니다. 강력한 형식의 목록에는 익명 형식을 추가 할 수 없습니다. –

답변

1

같은 일을 할 수 있나요 ,이 목록에 사용자 정의 itens를 추가하고이 목록을 ViewBag에 설정하십시오.

var members = group.Members.Select(x => new EmployeeViewModel() { EmployeeId = x.EmployeeId, DisplayName = x.DisplayName }).ToList(); 

members.Add(new EmployeeViewModel() { EmployeeId = "1", DisplayName = "Independent" }); 
members.Add(new EmployeeViewModel() { EmployeeId = "2", DisplayName = "Own" }); 

ViewBag.EmployeeID = new SelectList(members, "EmployeeID", "DisplayName"); 
+0

Thanks @Felipe. 거의 다 왔어. 유일한 문제는 EmployeeId를 GroupPrincipal이 사용할 수 없지만 UserPrincipal이 사용한다는 것입니다. 이걸 어떻게 풀 수 있는지 아십니까? – Stephen

+0

신경 쓰지 마세요! 여기에 대한 답변이 있습니다 http://stackoverflow.com/a/13609465/1472203 올바른 방향으로 나를 가리켜 주셔서 감사합니다 @ 펠리페. – Stephen

+0

글쎄, 당신은 ViewModel을 사용하여 필요한 것만보기로 보낼 수 있습니다. 목록이 입력되면 익명 유형을 추가 할 수 없습니다. :) –