Как мне передать список из десериализованного JSON в представление в список выбора

#c# #asp.net-core #model-view-controller

#c# #asp.net-core #модель-представление-контроллер

Вопрос:

Я настраиваю приложение для своей компании, но я относительно новичок в программировании. Теперь я пытаюсь связаться с 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=subtreeamp;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://learn.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:

Ваш 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>
  

Комментарии:

1. Так просто, но именно то, что я искал. Большое вам спасибо!

2. Рад помочь и добро пожаловать в Stack Overflow. Если этот ответ или любой другой решил вашу проблему, пожалуйста, пометьте его как принятый.