Я пытаюсь создать веб-сайт, на котором будет отображаться информация о пользователях (например, электронная почта, телефон, имя и т. Д.) Из Active Directory с C #. Используя приведенный ниже код, я смог получить всю необходимую информацию:
<table class="table table-striped">
<thead>
<tr>
<th colspan="7" class="title-center">Contacts Directory</th>
</tr>
<tr>
<th colspan="7" class="title-center">
<div class="input-group mb-3 custom_search">
<div class="input-group-prepend">
<span class="input-group-text" id="basic-addon1"><i class="fas fa-search"></i></span>
</div>
<input id="searchBox" type="text" class="form-control custom_search" placeholder="Search" aria-describedby="basic-addon1" />
</div>
</th>
</tr>
<tr>
<th scope="col">No.</th>
<th scope="col">Site</th>
<th scope="col">Full Name</th>
<th scope="col">Position</th>
<th scope="col">Email Address</th>
<th scope="col">IP Phone</th>
<th scope="col">Mobile No.</th>
</tr>
</thead>
<tbody>
<asp:PlaceHolder ID="RowsData" runat="server"></asp:PlaceHolder>
</tbody>
</table>
и код C # (запускается при загрузке формы):
DirectoryEntry de = new DirectoryEntry("LDAP://domain.com", "user", "password");
SearchResultCollection results;
DirectorySearcher ds = null;
ds = new DirectorySearcher(de);
ds.Filter = "(&(objectCategory=User)(objectClass=person))";;
ds.Sort = new SortOption("cn", System.DirectoryServices.SortDirection.Descending);
results = ds.FindAll();
int num = 1;
StringBuilder userdata = new StringBuilder();
foreach (SearchResult sr in results)
{
if (sr.Properties["physicaldeliveryofficename"].Count > 0) {
userdata.Append("<tr>");
userdata.Append("<td>" + num + "</td>");
num++;
if (sr.Properties["physicaldeliveryofficename"].Count > 0)
userdata.Append("<td>" + sr.Properties["physicaldeliveryofficename"][0].ToString() + "</td>");
else
userdata.Append("<td></td>");
if (sr.Properties["cn"].Count > 0)
userdata.Append("<td>" + sr.Properties["cn"][0].ToString() + "</td>");
else
userdata.Append("<td></td>");
if (sr.Properties["title"].Count > 0)
userdata.Append("<td>" + sr.Properties["title"][0].ToString() + "</td>");
else
userdata.Append("<td></td>");
if (sr.Properties["mail"].Count > 0)
userdata.Append("<td>" + sr.Properties["mail"][0].ToString() + "</td>");
else
userdata.Append("<td></td>");
if (sr.Properties["ipphone"].Count > 0)
userdata.Append("<td>" + sr.Properties["ipphone"][0].ToString() + "</td>");
else
userdata.Append("<td></td>");
if (sr.Properties["telephonenumber"].Count > 0)
userdata.Append("<td>" + sr.Properties["telephonenumber"][0].ToString() + "</td>");
else
userdata.Append("<td></td>");
userdata.Append("</tr>");
}
}
RowsData.Controls.Add(new Literal { Text = userdata.ToString() });
Теперь вот проблема. У меня есть текстовое поле, которое я бы использовал для поиска конкретного пользователя, используя, скажем, его имя, и это должно происходить с использованием Ajax без обновления страницы. Кроме того, в то время как я набираю текстовое поле, результат должен быть отфильтрован, даже если имя не является полным, это должно привести к потенциальным результатам.
Как я могу этого достичь? Буду признателен за ваши предложения по этому вопросу.
Спасибо,