我需要一些关于在asp.net mvc项目中使用distinguishedName检索用户的帮助。我有一个搜索功能,有2个属性要加载,“displayName”和“distinguishedName”。找到后,我会返回一个视图,其中包含找到每个用户的这两个参数的列表。然后我希望能够点击用户并立即显示他们的信息。那么一旦我只传递了这两个参数,如何加载有关用户的信息?
以下是最初搜索的功能:
public List<string> SearchUserByName(string name){
try{
DirectoryEntry ldapConnection = createDirectoryEntry();
DirectorySearcher search = new DirectorySearcher(ldapConnection);
search.PropertiesToLoad.Add("displayName");
search.PropertiesToLoad.Add("distinguishedName");
resultCollection = search.FindAll();
if (resultCollection.Count == 0)
{
return null;
}
else
{
foreach(SearchResult sResult in resultCollection)
{
if (sResult.Properties["distinguishedName"][0].Equals(null) ||
sResult.Properties["displayName"][0].Equals(null))
continue;
displayName.Add(sResult.Properties["distinguishedName"][0].ToString());
displayName.Add(sResult.Properties["displayName"][0].ToString());
}
}
ldapConnection.Close();
ldapConnection.Dispose();
search.Dispose();
return displayName;
}
catch (Exception e)
{
Console.WriteLine("Exception caught:\n\n" + e.ToString());
}
return null;
}
现在我的观点:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Résultat de recherche d'utilisateurs</title>
</head>
<body>
<h2> Résultat de recherche d'utilisateurs</h2>
@{
var incLoop = 0;
var incArr = 0;
var list = (List<string>)ViewData["Names"];
var size = list.Count();
string[] objSID = new string[size];
foreach (var link in list)
{
if (incLoop % 2 == 0)
{
objSID[incArr] = link;
incArr++;
}
else
{
<a href="@Url.Action("ShowUserInfo", "Home", new {dinstinguishedName=objSID[incArr-1]})">@link</a><br/>
}
incLoop++;
}
}
</body>
</html>
如果单击标签中的@link,您将获得信息,该信息显示在下一个视图中。我还将我的列表拆分为不在搜索结果视图中显示distinguishedName。 我现在所做的是,当你点击链接时研究Active Directory,但这似乎是不好的做法(搜索一次结果两次)。有什么想法吗?
谢谢你,希望它很清楚