呼び出されたときにすべての Active Directory ユーザー名を返す新しいアクション メソッドを作成したいと考えています。asp.net mvc アプリケーションと Active Directory は同じドメイン内にあります (現在、同じ開発マシン内にあります)。
そこで、次のアクション メソッドを定義しました。
public ViewResult Details()
{
var c = repository.GetUserDetails3();
return View("Details2",c); }
および次のリポジトリ メソッド:-
public DirectoryEntry GetUserDetails3()
{
DirectoryEntry de = new DirectoryEntry();
using (var context = new PrincipalContext(ContextType.Domain, "WIN-SPDEV.com"))
{
using (var searcher = new PrincipalSearcher(new UserPrincipal(context)))
{
foreach (var result in searcher.FindAll())
{
de = result.GetUnderlyingObject() as DirectoryEntry;
}
}
}
return de;
}
および次のモデル クラス:-
public class DirectoryUser
{public Nullable<Guid> Guid { get; set; }
public string Name { get; set; }
public string Username { get; set; }
}}
そして私が持っているビューで:-
@model IEnumerable<TMS.Models.DirectoryUser>
@{
ViewBag.Title = "Details2";
}
<h2>Details2</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.Guid)
</th>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.Username)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Guid)
</td>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Username)
</td>
しかし、アクションメソッドを呼び出すと、次のエラーが発生しました:-
パラメーター ディクショナリに、null 非許容型のパラメーター 'id' の null エントリが含まれています
ディクショナリに渡されたモデル アイテムのタイプは 'System.DirectoryServices.DirectoryEntry' ですが、このディクショナリにはタイプ 'System.Collections.Generic.IEnumerable`1[TMS.Models.DirectoryUser]' のモデル アイテムが必要です。