0

呼び出されたときにすべての 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]' のモデル アイテムが必要です。

4

1 に答える 1