从c#函数复合c1中获取项的集合
本文关键字:获取 集合 c1 函数 复合 | 更新日期: 2023-09-27 18:29:52
我编写了一个C#函数,用于重试Active Directory中的用户列表。
public static IEnumerable<string> ActiveDirectoryUsersList()
{
string[] adPropertiesToRetrive = { "displayName", "mail", "telephoneNumber", "displayName", "mobile" };
List<string> usersInfo = new List<string>();
// create and return new LDAP connection with desired settings
DirectoryEntry myLdapConnection = new DirectoryEntry("LDAP://OU=Users,OU=OUName,OU=Groups,DC=myDomain,DC=com", null, null, AuthenticationTypes.Secure);
DirectorySearcher search = new DirectorySearcher(myLdapConnection);
search.Filter = "(&(objectClass=user)(objectCategory=person))";
foreach (var prop in adPropertiesToRetrive)
{
search.PropertiesToLoad.Add(prop);
}
SearchResultCollection allUsers = search.FindAll();
foreach (SearchResult user in allUsers)
{
foreach (var prop in adPropertiesToRetrive)
{
var val = user.Properties[prop].Count > 0 ? user.Properties[prop][0].ToString() : "-";
usersInfo.Add(val);
}
}
return usersInfo;
}
现在我想在我的Razor函数中使用它,并迭代如下:
@foreach (var user in Fucntion("Custom.ActiveDirectoryUsersList"))
{
@user
}
但是Function(字符串名称)的结果是HTML字符串结果。如何调用定义的内联C#函数来获得函数的原始结果?
@foreach (var user in Function("Custom.ActiveDirectoryUsersList"))
{
<text>@Html.Raw(user)</text>
}
能做到吗?
Razor Page中的Function方法是为输出Html而设计的,这就是它的行为方式。如果你想从函数中检索任何非Html值,你可以使用Functions.ExecuteFunction(...)
helper方法,它返回一个object
,然后你可以将其转换为你知道函数返回的类型。
所以总的来说,你的代码会像这个吗
@foreach (var user in ((IEnumerable<string>)Functions.ExecuteFunction("Custom.ActiveDirectoryUsersList")))
{
<span>@user</span>
}
或者更干净一点的
@{
var users = (IEnumerable<string>)Functions.ExecuteFunction("Custom.ActiveDirectoryUsersList");
foreach (var user in users)
{
<span>@user</span>
}
}
阅读此处的函数助手类