如何将反序列化JSON中的列表传递给视图到选择列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将反序列化JSON中的列表传递给视图到选择列表相关的知识,希望对你有一定的参考价值。

我为我的公司设置了一个应用程序,但我在编程方面相对较新。现在我想尝试与API - >获取值 - >将值传递到选择列表 - >使列表重定向到另一个页面。现在我遇到一个问题,将值从我的控制器传递到视图中的选择列表。我用Google搜索了如何设置选择列表以及如何使用列表填充它但我似乎无法弄明白。我需要朝着正确的方向努力。我究竟做错了什么。我的课:

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>
答案

你的List<string> GetLeafSwitchProfiles方法返回Liststring。通过在Controller中添加以下内容将列表转换为IEnumerable<SelectListItem>

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

    return View();  
}

现在,通过以下方式填充SelectList:

<select asp-items="ViewBag.test"></select>

以上是关于如何将反序列化JSON中的列表传递给视图到选择列表的主要内容,如果未能解决你的问题,请参考以下文章

如何将从列表中选择的多个项目传递到下一个视图?

如何将视图中的 javascript 代码中的对象列表传递给控制器​​中的操作方法

如何使用 Rest Assured 在 Json 中构造空数组列表

C# MVC 4 RAZOR - JSON 使用 @foreach 从控制器返回列表到视图

Django:如何通过 AJAX 将 PKID 列表传递给下一个视图,然后重定向

通过jQuery ajax调用将值列表传递给django视图