问题描述
我正在尝试从活动目录中列出并自动完成用户名。 有人可以查看我的代码并告诉我有什么问题吗? 如果问题错了,请见谅。
查看
<input asp-for="User.Username" value="@ViewBag.Username" class="form-control" data-url="/ajax/user" />
<span asp-validation-for="User.Username" class="text-danger"></span>
//script to autocomplete
<script>
_af.push(() => {
$('#User_Username').autoComplete();
});
</script>
第一种方法
[HttpPost] //this to pull the username from AD
public JsonResult findit(string prefixText)
{
DirectoryEntry directory = new DirectoryEntry("LDAP://DC=x,DC=y");
string filter = "(&(name=" + prefixText + "*))";
string[] strCats = { "name" };
List<string> items = new List<string>();
DirectorySearcher dirComp = new DirectorySearcher(directory,filter,strCats,SearchScope.Subtree);
SearchResultCollection results = dirComp.FindAll();
foreach (SearchResult result in results)
{
foreach (DictionaryEntry prop in result.Properties)
{
if (prop.Key.Equals("name"))
{
System.Collections.IEnumerable propsEnum = prop.Value as System.Collections.IEnumerable;
foreach (object individualValue in propsEnum)
{
if (individualValue.ToString().IndexOf(prefixText) != 0)
{
items.Add(individualValue.ToString());
}
}
}
}
}
return Json(items.ToArray();
}
第二种方法
public async Task<IActionResult> Create(IFormCollection col)
{
string username = col["user.username"].ToString().normalize();
var testa = findit(username);
var user = _context.Users.FirstOrDefault(x => x.normalizedUsername = testa);//here the issue
if (user == null)
{
user = new User
{
DateCreated = DateTime.Now,normalizedUsername = username.normalize(),Username = $"{username[0].ToString().Trim().toupper()}{username.Substring(1)}"
};
_context.Users.Add(user);
_context.SaveChanges();
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)