C# 从控制器到视图的ASP.NET MVC4 Arraylist
我的arraylist有问题,无法在视图中读取 这是密码 DB:在这里,我从数据库中读出了数据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 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);
}