2017-08-24 104 views
2

我是ASP.NET MVC的新手,当我尝试将用户从Active Directory发布到我的SQL数据库时,我陷入了困境。ASP.NET MVC5 - 使用Active Directory用户的DropDownList

这是我走到这一步:

视图模型:

public class UserViewModel 
{ 
    public IEnumerable<SelectListItem> myADUsers { get; set; } 
    public int SelectedPersonId { get; set; } 
} 

控制器:

public ActionResult Index() 
    { 
     UserViewModel myADUsers = new UserViewModel();   
     myADUsers.myADUsers = GetADUsers(); 

     return View(myADUsers); 

    } 

public IEnumerable<SelectListItem> GetADUsers() 
    { 
     List<SelectListItem> _users = new List<SelectListItem>(); 
     //Instantiate Active Directory Server Connection 
     PrincipalContext adServer = new PrincipalContext(ContextType.Domain, null); 

     //Instantiate Active Directory User Group 
     GroupPrincipal adGroup = GroupPrincipal.FindByIdentity(adServer, "XXXXX"); 

     if (adGroup != null) 
     { 
      foreach (Principal p in adGroup.GetMembers()) 
      { 
       _users.Add(new SelectListItem { Text = p.SamAccountName, Value = p.SamAccountName }); 
      } 
     } 
     IEnumerable<SelectListItem> myADUsers = _users; 

     return myADUsers; 
    } 

查看:

@Html.DropDownList("My AD Users", Model.myADUsers, "Please select a user") 

这工作得很好,因为我的DropDownList被填充我的用户来自Active Directory,但我如何获得选定的用户?

我非常感谢能得到一些tipps ..谢谢。

+0

你的意思是你要发送的名字的用户到你的控制器方法? –

+0

感谢您的及时答复。是的,我想将选定的用户名发回给我想填充我的数据库模型(EF6)的UserName属性的Controller。 – exmachina

+0

很高兴,它帮助你 –

回答

1

只是把那个DropDownListHtml.BeginForm像我这样做如下:

@using (Html.BeginForm("Method", "Controller", FormMethod.Post)) 
    { 

    @Html.DropDownList("users", Model.myADUsers, "Please select a user") 
<button type="submit">Submit</button> 
    } 

然后在你的方法是这样获得的用户名:

[ValidateAntiForgeryToken] 
[HttpPost] 
public ActionResult Method(string users) 
{ 
    //do stuff here 
} 
+0

Yey,它的工作。非常感谢您的帮助。 – exmachina

+0

@exmachina \t 请接受答案以向其他人显示这是有帮助的,并且已回答 –

+0

done ..再次感谢:D – exmachina

相关问题