gpt4 book ai didi

c# - 使用 Active Directory 用户自动完成文本框

转载 作者:行者123 更新时间:2023-11-30 23:30:08 26 4
gpt4 key购买 nike

您好,我正在尝试创建一个文本框,当用户在其中输入内容时,他们会得到一个具有特定名称的用户列表:

示例:如果我开始键入 Jane.Doe,而我只键入了 Ja,则会出现一个列表,其中包含 Active Directory 中以 Ja 开头的用户。我需要弄清楚每次用户键入时如何让用户进入列表。我几乎完成了 ajax 方面的工作。它只是让用户列表每次都更新。

我目前的想法:

 [HttpPost]
public ActionResult RemoteData(string query)
{
List<string> lstADUsers = new List<string>();

using (var context = new PrincipalContext(ContextType.Domain, null, "LDAPPATH"))
{
using (var searcher = new PrincipalSearcher(new UserPrincipal(context)))
{
foreach (var result in searcher.FindAll())
{
DirectoryEntry de = result.GetUnderlyingObject() as DirectoryEntry;

string usersWithName;


if (!String.IsNullOrEmpty((String)de.Properties["samaccountname"].Value))
{
usersWithName = de.Properties["samaccountname"].Value.ToString();



lstADUsers.Add(usersWithName);
}

}
}
}

List<string> listData = null;
if (!string.IsNullOrEmpty(query))
{

listData = lstADUsers.Where(q => q.ToLower().StartsWith(query.ToLower())).ToList();

}

return Json(new { Data = listData });
}

所以这允许我们获得 Active Directory 中的每个用户,但我不想要这个,因为手头的问题是用户太多,搜索需要永远加载它,甚至在它显示名称列表之前.我只想能够接受一个参数并只搜索以该参数开头的用户。我该怎么做呢?

最佳答案

您需要使用通配符填充 UserPrincipalName 属性以限制结果集:

// assume 'query' is 'Ja'
UserPrincipal user = new UserPrincipal(context);
user.Name = query + "*"; // builds 'Ja*', which finds names starting with 'Ja'
using (var searcher = new PrincipalSearcher(user))
// ...

关于c# - 使用 Active Directory 用户自动完成文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35065692/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com