#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. Если этот ответ или любой другой решил вашу проблему, пожалуйста, пометьте его как принятый.