Я хочу передать имя 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);