Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 无法遍历集合_Asp.net Mvc 3_Entity Framework 4.1 - Fatal编程技术网

Asp.net mvc 3 无法遍历集合

Asp.net mvc 3 无法遍历集合,asp.net-mvc-3,entity-framework-4.1,Asp.net Mvc 3,Entity Framework 4.1,好的。。。我已经在这件事上碰壁好几个小时了。这似乎是一件简单的事情,我想不出一个合适的解决办法。这是一个MVC3网站 我有一个web服务,它在我的控制器中成功地返回一个实体框架客户对象,其中包含一条记录。它可以包含许多客户对象,但在本例中,它只有一条记录 YeagerTechWcfService.Customer custs = db.GetCustomers(); return View("Index", custs); 尝试遍历Customer对象时,我得到以下错误消息: 不能投 “((S

好的。。。我已经在这件事上碰壁好几个小时了。这似乎是一件简单的事情,我想不出一个合适的解决办法。这是一个MVC3网站

我有一个web服务,它在我的控制器中成功地返回一个实体框架客户对象,其中包含一条记录。它可以包含许多客户对象,但在本例中,它只有一条记录

YeagerTechWcfService.Customer custs = db.GetCustomers();
return View("Index", custs);
尝试遍历Customer对象时,我得到以下错误消息:

不能投 “((System.Web.Mvc.WebViewPage)(this)).ViewData.Model” (具有实际类型的 “YeagerTech.YeagerTechWcfService.Customer”)至 'System.Collections.Generic.IEnumerable'

它显然不能将我的客户对象转换为IEnumberable对象,我不知道为什么。。。。当您试图查看每个“客户”记录时,您不能将EF对象强制转换为IEnumerable对象吗

在我看来,我有以下代码。ViewData.Model中包含客户记录的数据。 @型号YeagerTech.YeagerTechWcfService.Customer

@if (ViewData.Model != null)
    {
        foreach (YeagerTech.YeagerTechWcfService.Customer item in (IEnumerable<YeagerTech.YeagerTechWcfService.Customer>)ViewData.Model)
@if(ViewData.Model!=null)
{
foreach(YeagerTech.YeagerTechWcfService.Customer项在(IEnumerable)ViewData.Model中)

有人能告诉我如何解决这个问题吗?

这个问题与EF无关。你不能将
Customer
对象强制转换为
IEnumerable

我不确定当您从控制器传递
Customer
对象作为模型时,为什么要在视图中迭代

如果您的
GetCustomers()
方法的返回类型为
YeagerTech.YeagerTechWcfService.Customer
,则可以创建一个列表并将其传递给视图

var customers = new List<YeagerTech.YeagerTechWcfService.Customer>(db.GetCustomers());
return View("Index", customers);
var customers=新列表(db.GetCustomers());
返回视图(“索引”,客户);
我建议你检查一下你的设计。

试试这个

YeagerTechWcfService.Customer custs=db.GetCustomers().ToList()

更新 下面是我在现有网站中的代码,它返回一个可枚举列表,我在控制器中迭代该列表

public List<Subscriber> GetSubscribers()
{
    using (var database = new Data.MyCoolDatabase())
     {
        return database.Subscribers.ToList();
     }
}
public List GetSubscribers()
{
使用(var database=new Data.myColdDatabase())
{
返回database.Subscribers.ToList();
}
}
在您的视图中,确保您的模型语句是IEnumerable,就像这样

@model IEnumerable<Newsletter.Web.Models.Subscriber>
@model IEnumerable

我不能肯定地说,因为我看不到您的代码,但我假设您的视图被设置为强类型客户视图,如果您将其更改为IEmumurable,它应该可以解决问题

编辑:将@model line从
Customer
更改为
IEnumerable
,从错误消息判断,这将修复您的错误,您将其设置为客户类型的强类型视图,这只允许您使用单个客户来使用
IEnumerable
视图模型行需要重新定义为mtch t他或你将永远收到此错误如果这不能修复你的错误,请用你的视图的完整来源更新你的问题,以便我们可以查看所有内容

你有一个客户列表(或可枚举)和一个客户。它从以下行开始:

YeagerTechWcfService.Customer custs = db.GetCustomers();
左侧的声明清楚地表明它是一个单一客户,而右侧的方法名称表示您希望看到一个客户列表

在视图中,您将模型声明为单个客户:

@model YeagerTech.YeagerTechWcfService.Customer
但是,您不使用强类型实例变量
Model
,而是使用非类型属性
ViewData.Model
,并将其强制转换为非类型属性(从而获得错误)

现在,
db.GetCustomers()
返回一个客户(不是一个包含单个客户的列表)。因此,从视图中删除foreach循环,只需编写:

@if (Model != null)
{
    <p>@Model.FirstName @Model.LastName</p>
    ...
}
你的看法是:

@model List<YeagerTech.YeagerTechWcfService.Customer>

@if (Model != null)
{
    foreach (YeagerTech.YeagerTechWcfService.Customer item in Model)
    {
        <p>@item.FirstName @item.LastName</p>
        ....
    }
}
@型号列表
@如果(型号!=null)
{
foreach(模型中的YeagerTech.YeagerTechWcfService.Customer项)
{
@item.FirstName@item.LastName

.... } }

应该不需要使用
ViewData.Model
或type cast。它们只是覆盖类型不匹配。

编辑了您的帖子,您可以看到您的代码不完整。您可以用完整的代码更新吗?
db.GetCustomers()的返回结果是什么
除非
YeagerTechWcfService,否则它不会编译。Customer
实现
IEnumerable
。您的评论不正确…ToList将DbSet转换为IEnumerable对象。我将更详细地更新我的答案。请仔细查看
YeagerTechWcfService.Customer custs=db.GetCustomer中
=
左侧的内容s().ToList()
。你能为
客户
对象分配一个列表吗?嘿,你说得对!我错过了sagesky36想要将可枚举列表放入单个对象的事实。sagesky36很可能很沮丧,因为他/她已经花了数小时在这个问题上,无法实现这一点。也许你可以通过编辑答案来达到更好的目的真正有帮助的解决方案,而不是质疑他/她的动机,否决我的答案,并指出我的答案有缺陷。我认为sagesky36只是想找到问题的答案。简单地做你的答案并没有太大帮助。我将web服务中的方法从public Customer GetCustomers()更改为public IEnumerable GetCustomers()。我在此方法内执行以下查询,如下所示:IEnumerable customer=null;var customerEntity=from c in DbContext.Customers仅执行您的答案没有多大帮助。我将web服务中的方法从public customer GetCustomers()更改为public IEnumerable GetCustomers()。我正在该方法内执行以下查询,如下所示:IEnumerable customer=null;IEnumerable customer=null;var customerEntity=from c in DbContext.customer我在上一条语句中收到如下错误:无法强制转换“customerEntity.ToList()”(其实际类型为“System.Collect
@model List<YeagerTech.YeagerTechWcfService.Customer>

@if (Model != null)
{
    foreach (YeagerTech.YeagerTechWcfService.Customer item in Model)
    {
        <p>@item.FirstName @item.LastName</p>
        ....
    }
}