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

Nis*_*sar 2 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);
    }
Run Code Online (Sandbox Code Playgroud)

在我的模型中

 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;
    }
Run Code Online (Sandbox Code Playgroud)

我的看法

    @foreach (var person in Model)
    {
        <ul>
            <li>
                @person.ID;
            </li>
        </ul>
    }
Run Code Online (Sandbox Code Playgroud)

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

Wik*_*hla 14

代替

@model mvc_ado.net_crud.Models.BusinessObject.ContactPerson
Run Code Online (Sandbox Code Playgroud)

@model IEnumerable<mvc_ado.net_crud.Models.BusinessObject.ContactPerson>
Run Code Online (Sandbox Code Playgroud)

在你看来.

这假设您ContactPersonList实现了IEnumerable<ContactPerson>.如果没有,那么你可以试试

@model ContactPersonList
Run Code Online (Sandbox Code Playgroud)

然而,目前尚不清楚自定义类型ContactPersonList是什么.

  • 你是奇迹..非常感谢... @Wiktor Zychla (3认同)