将列表发送到View以进行迭代

时间:2017-04-21 11:50:25

标签: c# asp.net-mvc

我尝试搜索SO,但也许我没有使用正确的搜索字词。

基本上,我首先需要在我的控制器中生成一个包含以下内容的列表:

Item 1: name = 'cat', category = 'animal'
Item 2: name = 'dog', category = 'animal'
Item 3: name = 'tulip', category = 'plant'

等等。因此,当我看到我的观点时,我可以做到:

@foreach (item in list)
{
    if (category == "animal")
    {
        @item.name<br />
    }
}

如何在控制器中构建列表?

1 个答案:

答案 0 :(得分:2)

与构建任何列表的方式相同。我们假设您有一个定义项目的课程,我们将其称为MyModel。 (在这种情况下,我假设它具有字符串属性NameCategory。)然后您构建该对象的列表:

var models = new List<MyModel>();

您可以将任意数量的项目添加到该列表中:

models.Add(new MyModel { Name = "Cat", Category = "Animal" });
models.Add(...);
// etc.

然后将其发送到视图:

return View(models);

在视图中,您将其声明为模型类型:

@model List<MyModel>

然后可以在视图中迭代它:

@foreach (var item in Model)
{
    if (item.Category == "animal")
    {
        @item.Name<br />
    }
}

List<T>与任何其他模型类型没有区别。您可以像任何其他模型一样构建一个并将其发送到您的视图。

修改:就本例而言,MyModel类是:

public class MyModel
{
    public string Name { get; set; }
    public string Category { get; set; }
}

当然,您希望使用比MyModel更有意义的名称。