Использование функции контроллера MVC для заполнения текста как «имени» и значения как «Id» в выпадающем списке без использования модели - PullRequest
0 голосов
/ 05 июля 2019

В моем файле контроллера есть функция, которая загружает детали групп AD с помощью библиотеки System.Management.Automation.Создание экземпляра PowerShell и выполнение сценария.Я выбираю 2 атрибута групп, имя и идентификатор GUID, я хочу указать имя в поле «Текст» раскрывающегося списка, а идентификатор GUID - в поле «Значение».Вот мой код в C #:

 public ActionResult GroupReview()
    {
       ViewBag.Groups = PowerShellExecutorLst(AppDomain.CurrentDomain.BaseDirectory + "Shell\\Get-ADStewardGroups.ps1");
 }

 public List<SelectListItem> PowerShellExecutorLst(string scriptPath)
    {
        var shell = PowerShell.Create();
        var listItemStr = new List<String>();
        shell.Commands.AddCommand(scriptPath);
        var results = shell.Invoke();
        if (results.Any())
        {
            foreach(var psObj in results)
            {
                listItemStr.Add(Server.HtmlEncode(psObj.ToString().Trim('@', '{', '}')));
            };
        }
        List<SelectListItem> listItems = listItemStr.Select(s => new SelectListItem { Value = s, Text=s }).ToList();
        shell.Dispose();
        return listItems;
    }

Вот мой HTML-код для заполнения DropDownList:

<div class="col-md-12" style="width:auto">
            @Html.DropDownList("ddlGroup", (IEnumerable<SelectListItem>)@ViewBag.Groups, "Select Group", new { @class = "form-control" })
        </div>

Вот скрипт PowerShell, который я передаю

Get-ADGroup -Properties Name, ObjectGUID | Select Name, ObjectGUID

IЯ могу получить данные по мере необходимости, просто пытаясь раздвоить имя и идентификатор GUID в поле «Текст и значение» DropDownList соответственно.

...