Как передать список из десериализованного JSON в представление в список выбора - PullRequest
0 голосов
/ 28 марта 2019

Я настраиваю приложение для своей компании, но я относительно новичок в программировании.Теперь я пытаюсь поговорить с API -> получить значения -> передать значения в список выбора -> сделать список перенаправить на другую страницу.Теперь я сталкиваюсь с проблемой передачи значений из моего контроллера в список выбора в представлении.Я гуглил, как настроить списки выбора и как заполнить его списком, но я не могу понять это.Мне нужен толчок в правильном направлении.Что я делаю неправильно.мой класс:

public class ApiCalls
{
    Login login = new Login();

    public List<string> GetLeafSwitchProfiles()
    {
        string token = login.Apilogin();
        var client = new RestClient("https://10.23.175.1/api/node/mo/uni/infra.json?query-target=subtree&target-subtree-class=infraNodeP");
        var request = new RestRequest(Method.GET);
        request.AddHeader("cache-control", "no-cache");
        request.AddHeader("Content-Type", "application/json");
        request.AddCookie("APIC-cookie", token);
        IRestResponse response = client.Execute(request);

        if (response.IsSuccessful)
        {
            LeafSwitchesProfileModel.Rootobject rootobject = (LeafSwitchesProfileModel.Rootobject)JsonConvert.DeserializeObject<LeafSwitchesProfileModel.Rootobject>(response.Content);
            List<string> leafprofiles = new List<string>();
            foreach (var num in rootobject.imdata)
            {
               //leafprofiles.Add(num.infraNodeP.attributes.name);
               string name = num.infraNodeP.attributes.name;
                leafprofiles.Add(name);
            }
          return leafprofiles;
        }
        else
        {
            return null;
        }
    }
}

мой контроллер:

public IActionResult Index()
{
    //Pick switch
    ApiCalls apiCalls = new ApiCalls();
    ViewBag.test = apiCalls.GetLeafSwitchProfiles(); 

    return View();  
}

мой вид:

@{
    ViewData["Title"] = "Home Page";
}

<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>

    @foreach (var item in ViewBag.test)
    {
        <h2>@item.Name</h2>
    }
</div>

1 Ответ

1 голос
/ 28 марта 2019

Ваш метод List<string> GetLeafSwitchProfiles возвращает List из string. Преобразуйте список в IEnumerable<SelectListItem>, добавив в свой контроллер следующее:

public IActionResult Index()
{
    //Pick switch
    ApiCalls apiCalls = new ApiCalls();
    ViewBag.test = new SelectList(apiCalls.GetLeafSwitchProfiles()); 

    return View();  
}

Теперь заполните свой список выбора:

<select asp-items="ViewBag.test"></select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...