不包含' GetEnumerator'的公开定义在MVC中

时间:2014-03-18 15:12:16

标签: asp.net asp.net-mvc razor

我试图在2天内解决这个问题。

错误

  

编译器错误消息:CS1579:foreach语句无法操作   类型的变量   ' mvc_ado.net_crud.Models.BusinessObject.ContactPerson'因为   ' mvc_ado.net_crud.Models.BusinessObject.ContactPerson'才不是   包含' GetEnumerator'

的公开定义

我的控制器

    public ActionResult List()
    {
        var model = ContactPersonManager.GetList();
        return View(model);
    }

在我的模特中

 public static ContactPersonList GetList()
    {
        ContactPersonList tempList = null;
        using (var myConnection = new SqlConnection(AppConfiguration.ConnectionString))
        {
            var myCommand = new SqlCommand("uspContactPersonSelectList", myConnection) { CommandType = CommandType.StoredProcedure };
            myConnection.Open();
            using (var myReader = myCommand.ExecuteReader())
            {
                if (myReader.HasRows)
                {
                    tempList = new ContactPersonList();
                    while (myReader.Read())
                    {
                        tempList.Add(FillDataRecord(myReader));
                    }
                }
                myReader.Close();
            }
        }
        return tempList;
    }

我的观点

    @foreach (var person in Model)
    {
        <ul>
            <li>
                @person.ID;
            </li>
        </ul>
    }

我错过了还是做错了什么?

1 个答案:

答案 0 :(得分:13)

而不是

@model mvc_ado.net_crud.Models.BusinessObject.ContactPerson

@model IEnumerable<mvc_ado.net_crud.Models.BusinessObject.ContactPerson>

在你看来。

这假定您的ContactPersonList实现了IEnumerable<ContactPerson>。如果没有,那么你可以尝试

@model ContactPersonList

但是不清楚自定义类型ContactPersonList是什么。