【问题标题】:How to pass List from backend to front end in ASP.NET如何在 ASP.NET 中将列表从后端传递到前端
【发布时间】:2016-03-31 16:12:50
【问题描述】:

您好,过去一小时我一直在尝试将我的 c# 后端连接到前端以输出列表。 我一直想知道将数据从后端传递到前端的最佳方式是什么。

在我的场景中,我只想从 mvc 中输出一个简单的列表,但是如何将我的列表发送到前端,这样我就可以做一些简单的事情,例如使用 foreach 之类的东西输出表中的所有数据:

foreach (var value in customerList) {
<p>value.Name</p>
}

我查看了此链接中建议的解决方案:How to pass List from Controller to View in MVC 3. by archil

但我不知道该放在哪里 受保护的内部 ViewResult 视图( 对象模型 )

那么我怎样才能输出我的列表呢? 我知道该列表包含内容,因为我已经设置了一个断点并单步执行。

这就是我的代码的样子:

    public List<Customer> customerList = new List<Customer>();
    public ActionResult Index()
    {

        var client = new CustomerAzureAPIApp();
        var response = client.Customer.Get();
        var customers = response;

        foreach (var customer in customers)
        {
            customerList.Add(customer);
        }

        return View();
}

我知道我可以使用 ViewBag,但我不想为列表中的每个项目创建一个新的 ViewBag,我宁愿只发送整个列表。有什么建议吗?

【问题讨论】:

    标签: c# asp.net .net asp.net-mvc


    【解决方案1】:

    好吧,我不知道最佳解决方案,但不要对您提供的链接中 archil 建议的代码感到困惑。

    您只需将您的 customerList 与

    return View(customerList); 
    

    作为参数,因为该行代码通过使用将视图呈现给响应的模型自动创建 ViewResult 对象。

    所以在你的前端,你最终可以为你的桌子做这样的事情:

    <table
        <tr>
            <th>ID</th>
            <th>Name</th>
        </tr>
        @foreach (var item in Model)
        {
            <tr>
                <td>@item.Name</td>
            </tr>
        }
    </table>
    

    请记住在您的项目前加上“@”,因为我们正在处理 Razor 视图引擎。

    【讨论】:

      【解决方案2】:

      如前所述,您可以通过在视图中返回列表来使用模型

      return View(*insert list here*);
      

      在你看来:

      @model List<*insertTypehere*>
      

      在你的 foreach 中你会使用变量名

      Model
      

      还有另一种方法,即在视图中不返回任何内容并在控制器中使用 Viewbag。

      Viewbag.TheNameYouWish = *insert list*
      

      在您看来,您可以使用:

      @Viewbag.TheNameYouWish
      

      要么

      @foreach (var item in Model)
      

      @foreach (var item in @Viewbag.TheNameYouWish)
      

      完成这项工作。

      【讨论】:

        【解决方案3】:

        在您看来,您已经声明了它应该绑定到的模型,然后对其进行迭代:

        @model  List<Customer>
        
        @foreach (var value in Model) {
        <p>value.Name</p>
        }
        

        您需要将列表传回查看操作的第二件事,因此请更改以下内容:

        return View();
        

        到:

         return View(customerList);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-05-25
          • 2020-01-17
          • 2012-11-12
          • 1970-01-01
          • 2021-12-23
          • 2020-03-01
          • 2016-06-12
          • 1970-01-01
          相关资源
          最近更新 更多