C# 从控制器到视图的ASP.NET MVC4 Arraylist

C# 从控制器到视图的ASP.NET MVC4 Arraylist,c#,list,asp.net-mvc-4,arraylist,C#,List,Asp.net Mvc 4,Arraylist,我的arraylist有问题,无法在视图中读取 这是密码 DB:在这里,我从数据库中读出了数据 ArrayList result = new ArrayList(); MySqlDataReader reader = cmd.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { ArrayLis

我的arraylist有问题,无法在视图中读取

这是密码

DB:在这里,我从数据库中读出了数据

ArrayList result = new ArrayList();

        MySqlDataReader reader = cmd.ExecuteReader();

        if (reader.HasRows)
        {
            while (reader.Read())
            {
                ArrayList temp = new ArrayList();
                temp.Add(reader["Voornaam"].ToString());
                temp.Add(reader["Tussenvoegsel"].ToString());
                temp.Add(reader["Achternaam"].ToString());
                temp.Add(reader["Adres"].ToString());
                temp.Add(reader["Postcode"].ToString());
                temp.Add(reader["Plaats"].ToString());
                temp.Add(reader["Land"].ToString());
                temp.Add(reader["Geboortedatum"].ToString());
                temp.Add(reader["Telefoonnummer"].ToString());
                temp.Add(reader["Mobielnummer"].ToString());
                temp.Add(reader["Email"].ToString());
                result.Add(temp);
            }
            reader.Close();
        }
        else
        {

        }
        return result;
控制器:制作arraylist gebruikers并将其发送到视图

DB dbase = new DB();
            ArrayList Gebruikers = dbase.getGebruikerALL(Session["Bid"].ToString());
            return View(Gebruikers);
视图:读取foreach中的数组

@model IEnumerable<EventRentalSystem.Models.ProfielModels>
@foreach (var item in Model)
                            {
                                <tr>
                                    <td>@Html.DisplayFor(modelItem => item.Gebruikersnaam)</td>
                                    <td>@Html.DisplayFor(modelItem => item.Voornaam)</td>
                                    <td>@Html.DisplayFor(modelItem => item.Tussenvoegsel)</td>
                                    <td>@Html.DisplayFor(modelItem => item.Achternaam)</td>
                                    <td>@Html.DisplayFor(modelItem => item.Adres)</td>
                                    <td>@Html.DisplayFor(modelItem => item.Postcode)</td>
                                    <td>@Html.DisplayFor(modelItem => item.Plaats)</td>
                                    <td>@Html.DisplayFor(modelItem => item.Land)</td>
                                    <td>@Html.DisplayFor(modelItem => item.Geboortedatum)</td>
                                    <td>@Html.DisplayFor(modelItem => item.Telefoonnummer)</td>
                                    <td>@Html.DisplayFor(modelItem => item.Mobielnummer)</td>
                                    <td>@Html.DisplayFor(modelItem => item.Email)</td>
                                    <td><a class="edit" href="javascript:;">Bewerk</a></td>
                                    <td><a class="delete" href="javascript:;">Verwijder</a></td>
                                </tr>
                            }
@model IEnumerable
@foreach(模型中的var项目)
{
@DisplayFor(modelItem=>item.Gebruikersnaam)
@DisplayFor(modeleItem=>item.Voornaam)
@DisplayFor(modelItem=>item.Tussenvoegsel)
@DisplayFor(modeleItem=>item.Achternaam)
@DisplayFor(modeleItem=>item.Adres)
@DisplayFor(modeleItem=>item.Postcode)
@DisplayFor(modelItem=>item.Plaats)
@DisplayFor(modeleItem=>item.Land)
@DisplayFor(modeleItem=>item.geboortedatam)
@DisplayFor(modeleItem=>item.telefoonnumer)
@DisplayFor(modelItem=>item.Mobielnummer)
@DisplayFor(modelItem=>item.Email)
}
但仍然会得到错误:

传递到字典的模型项的类型为“System.Collections.ArrayList”,但此字典需要类型为“System.Collections.Generic.IEnumerable”“1[EventRentalSystem.Models.ProfielModels]”的模型项


有人知道我如何读取视图中的数组吗?

例如,使用
列表

如果您来自Java背景:C中的
ArrayList
比Java中的
ArrayList
要古老得多:正确的选择是
列表。
C#中的
ArrayList
可以接受任何类型的对象,而您的大多数案例更适合使用强类型集合

以下是一些需要考虑的事项:

创建一个包装类

现在,您正在从
用户
检索数据,并在将所有数据转换为字符串表示形式后,将它们放置在arraylist中。这是可怕的:您无法轻松访问这些值,这些值将需要强制转换以供进一步使用,等等

而是创建一个类
User
,并将这些字段存储在其中

class User {
 public string FirstName { get; set; }
 public string LastName { get; set; }
 // Other properties
}
现在你可以像这样加满它:

while (reader.Read()) {
 User user= new User();
 user.FirstName = reader["Voornaam"]);
 user.LastName = reader["Achternaam"]);

 result.Add(user);
}
由于
List
是一个
IENumerable
ArrayList
不是,因此您的问题将得到解决


旁注:属性以大写字母开头,局部变量以小写字母开头。

您的Razor视图需要ProfielModels模式类型的IEnumerable。但是您传递的是ArrayList类型,它没有在列表中实现IEnumerable。 因此,首先定义您的模态类,如下所示

public class ProfielModels
{
    public string Voornaam { get; set; }
    public string Tussenvoegsel { get; set; }
    public string Achternaam { get; set; }
    public string Adres { get; set; }
    public string Postcode { get; set; }
    public string Plaats { get; set; }
    public string Land { get; set; }
    public string Geboortedatum { get; set; }
    public string Telefoonnummer { get; set; }
    public string Mobielnummer { get; set; }
    public string Email { get; set; }
}
然后将数据库值绑定到模式OBEJCT中

List-listmodel=List()

//最后更改控制器代码,如下所示,以返回实现IEnumerable的对象

dbase=newdb()

List listmodel=dbase.getgebruikeral(Session[“Bid”].ToString())

返回视图(Gebruikers)

错误消息非常清楚。您混合了
数组列表
(它接受任何对象的列表)和强类型的
IEnumerable
。选择一个(优先选择强类型)。我如何解决这个问题?
        while (reader.Read())
        {
            ProfielModels temp = new ProfielModels();
            temp.Voornaam = reader["Voornaam"].ToString();
            temp.Tussenvoegsel = reader["Tussenvoegsel"].ToString();
            temp.Achternaam = reader["Achternaam"].ToString();
            temp.Adres = reader["Adres"].ToString();
            temp.Postcode = reader["Postcode"].ToString();
            temp.Plaats = reader["Plaats"].ToString();
            temp.Land = reader["Land"].ToString();
            temp.Geboortedatum = reader["Geboortedatum"].ToString();
            temp.Telefoonnummer = reader["Telefoonnummer"].ToString();
            temp.Mobielnummer = reader["Mobielnummer"].ToString();
            temp.Email = reader["Email"].ToString();
            ListModal.Add(temp);
        }