如何在ASP.NET中将List从后端传递到前端

时间:2016-03-31 16:12:51

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

您好我在最后一小时尝试将我的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,我宁愿只发送整个列表。有什么建议吗?

3 个答案:

答案 0 :(得分:3)

我不知道最佳解决方案,但不要对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视图引擎。

答案 1 :(得分:1)

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

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)

完成这项工作。

答案 2 :(得分:0)

在你看来你已经声明了应该绑定的模型,然后迭代它:

@model  List<Customer>

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

您需要将列表传回给行动进行查看,以便更改以下内容:

return View();

到:

 return View(customerList);