Wednesday, March 16, 2011

Eseguire un metodo MVC tramite jQuery

Ho avuto la necessità di eseguire una ricerca su Active Directory da un’interfaccia ASP.NET MVC.
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)
            {
                List 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);
            }
    l’attributo in resta al metodo serve per evitare che IIS mi metta in cache i risultati passati.
    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