Отображение группы Active Directory в виде MVC - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь отобразить активный член группы каталогов в представлении.Когда я запускаю код, у меня появляется ошибка «Элемент модели, переданный в словарь, имеет тип« System.String [] », но для этого словаря требуется элемент модели типа« System.Collections.Generic.IEnumerable`1 [SSSFT.LogIT.Models.ActiveDirectory]».Отладка кода показывает всех членов группы, которых я ищу

Модель класса

public class ActiveDirectory
{
    public int id { get; set; }

    //public string Username { get; set; }

    //public string Email { get; set; }

    public string SamAccountName { get; set; }


}

Контроллер

   public ActionResult Index(string username)
    {
        username = "sssftappdev";
        string[]output = null;     
        using (var ctx = new PrincipalContext(ContextType.Domain))
        using (var user = UserPrincipal.FindByIdentity(ctx, username))
        {
            if (user != null)
            {
                output = user.GetGroups() //this returns a collection of principal objects
                    .Select(x => x.SamAccountName) // select the name.  you may change this to choose the display name or whatever you want
                    .ToArray(); // convert to string array
            }

        }
       return View(output);
    }

Просмотр

@model IEnumerable<SSSFT.LogIT.Models.ActiveDirectory>
<table class="table">
<tr>
    <th>
        @Html.DisplayNameFor(model => model.SamAccountName)
    </th>
    <th></th>
</tr>

 @foreach (var item in Model) {
  <tr>
    <td>
        @Html.DisplayFor(modelItem => item.SamAccountName)
    </td>
    <td>
        @Html.ActionLink("Edit", "Edit", new { id=item.id }) |
        @Html.ActionLink("Details", "Details", new { id=item.id }) |
        @Html.ActionLink("Delete", "Delete", new { id=item.id })
    </td>
   </tr>
 }

  </table>

1 Ответ

0 голосов
/ 14 сентября 2018

Вы можете исправить эту ошибку, просто обновив @model:

@model String[]

В настоящее время вы передаете String[] вашему представлению, ожидая, что IEnumerable равен SSSFT.LogIT.Models.ActiveDirectory. Либо обновите код, чтобы он возвращал правильный тип данных, либо адаптируйте строго типизированное представление к фактическому результату, который вы возвращаете.

...