Получить атрибуты активного каталога с помощью контроллера JavaScript и c # ASP.NET MVC - PullRequest
0 голосов
/ 13 октября 2018

Я хочу передать имя SamAccountName, которое вводится пользователем, и, нажав кнопку ввода в contenteditable элементе, отправить это имя пользователя в контроллер C # MVC, который, в свою очередь, запрашивает Active Directory и возвращает firstname и email.

В настоящее время я получаю [object object] и undefined от контроллера.

Это то, что у меня есть, и теперь я ищу совет.

Javascript

     $.ajax({
         url: "@Url.Action("GetUserDetails")",
         data: { 'PIC': userPIC },
         type: 'GET',
         success: function (userData) {
            alert(userData.Name);
            alert(userData.Email);
         },
         error: function (errMsg) {
            alert(errMsg);
         }
     });

(Используя предупреждения выше, просто чтобы посмотреть, смогу ли я вернуть данные.)

Контроллер

 public class UserModel
    {
        public string Name { get; set; }
        public string Email { get; set; }
    }


    public ActionResult GetUserDetails(string PIC)
    {

        string ldapAddress = "ldapaddress";
        string name = "NA";
        string email = "NA";

        try
        {
            using (System.DirectoryServices.DirectoryEntry de = new System.DirectoryServices.DirectoryEntry(ldapAddress, "username", "pass"))
            {
                DirectorySearcher ds = new DirectorySearcher(de);
                ds.Filter = "(&((&(objectCategory=Person)(objectClass=User)))(samaccountname=p722))";
                ds.SearchScope = SearchScope.Subtree;
                SearchResult rs = ds.FindOne();

                if (rs.GetDirectoryEntry().Properties["samaccountname"].Value != null)
                {

                    name = rs.GetDirectoryEntry().Properties["givenName"].Value.ToString();

                    email = rs.GetDirectoryEntry().Properties["mail"].Value.ToString();


                }
            }
        }
        catch (Exception b)
        {


        }

        UserModel userData = new UserModel();
        userData.Name = name;
        userData.Email = email;

        return Json(userData);
    }

Решено!

  var js = new JsonSerializerSettings();

        return Json(userData, js);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...