Inserendo il testo da ricercare su una textbox presente nella mia View (texttosearch) effettuo una chiamata ad un metodo del controller associato.
Per far ciò ho usato jQuery inserendo semplicemente questo script nella mia pagina:
var texttosearch = $("#textToSearch").val(); $.getJSON("/AccountManager/SearchForADUsers", { textToSearchInActiveDirectory: texttosearch }, function (data) { var markup = ''; $.each(data, function (key, val) { markup += '+ val.sAMAccountName + '\' >' + val.GivenName + ' ' + val.SN + ' [' + val.sAMAccountName + ']' + ''; });
Il metodo SearchForADUsers è così dichiarato:
[OutputCache(Location = OutputCacheLocation.None)] public JsonResult SearchForADUsers(string textToSearchInActiveDirectory) { Listl’attributo in resta al metodo serve per evitare che IIS mi metta in cache i risultati passati.usersInfo = new List (); Logger.Write("SearchForADUsers request for: " + textToSearchInActiveDirectory); SearchUsers searchFactory = SearchUsers.GetEntryPoint(Settings.Default.LDAPToSearch); SearchFilter filter = new SearchFilter(SearchField.Surname, SearchType.StartsWith); filter.StringToSearch = textToSearchInActiveDirectory; Logger.Write("Active Directory is ENABLED --> Searching AD for users"); usersInfo = searchFactory.PerformSearchSubtree(filter); Logger.Write("The applications found: " + usersInfo.Count + " users"); return Json(usersInfo.OrderBy(u => u.SN), JsonRequestBehavior.AllowGet); }
La classe JsonReult si occupa di stringare il risultato in formato json da poter riutilizzare lato client.
Il risultato che ottengo dal metodo è una lista di un oggetto custom così definito:
public class UserInfo { public string sAMAccountName { get; set; } public string Password { get; set; } public string DisplayName { get; set; } public string GivenName { get; set; } public string SN { get; set; } public string Company { get; set; } public string Email { get; set; } public string Mobile { get; set; } public string Path { get; set; } public string UserPrincipalName { get; set; } }Spero vi torni utile
ciao
No comments:
Post a Comment