MVC,foreach语句不能对类型变量进行操作,因为它不包含'GetEnumerator'的公共定义

时间:2014-03-01 23:04:28

标签: linq asp.net-mvc-4 viewmodel

我正在.NET MVC中开发一个应用程序,我正在尝试从两个表(模型)中提取记录列表,并通过ViewModel将列表发送到我的视图。您可以在下面看到我的两个原始模型和ViewModel

       public partial class Animal
{
    public int AnimalId { get; set; }
    public Nullable<int> UserId { get; set; }
    public string TagNo { get; set; }
    public Nullable<int> Species { get; set; }
    public Nullable<bool> Sex { get; set; }
    public Nullable<int> AnimalBreed { get; set; }
    public Nullable<System.DateTime> DOB { get; set; }
    public Nullable<int> OwnershipStatus { get; set; }
    public Nullable<System.DateTime> DateAdded { get; set; }
    public Nullable<bool> BornOnFarm { get; set; }

    public virtual Breed Breed { get; set; }
}



        public partial class Breed
{
    public int id { get; set; }
    public Nullable<int> SpeciesID { get; set; }
    public string Breed1 { get; set; }
}



        public partial class CowIndexVM
{

    public string TagNo { get; set; }
    public string AnimalBreed { get; set; }
    public Nullable<System.DateTime> DateAdded { get; set; }


}

在这里你可以看到我用来控制器的代码来选择一个记录列表,然后我将在视图的表格中显示

     List <CowIndexVM> myCowIndexVM = (from animals in db.Animals
                                join aBreed in db.Breeds on animals.AnimalBreed equals aBreed.id
                                where animals.Species == 2 & animals.OwnershipStatus == 1
                                & animals.UserId == WebSecurity.CurrentUserId
                                orderby animals.DateAdded descending
                                select new CowIndexVM
                                {
                                    TagNo = animals.TagNo,
                                    AnimalBreed = aBreed.Breed1,
                                    DateAdded = animals.DateAdded
                                }).ToList();






        return View("Index", myCowIndexVM);

但是当我尝试运行时,我得到上面显示的错误。

任何人都可以帮助我吗?为了清楚起见我试图在表中显示检索到的记录

由于

1 个答案:

答案 0 :(得分:4)

我能够找到问题的原因。

在我的视图顶部,我宣布视图将采用什么模型,我将其声明为:

    @Model FarmManager.ViewModels.CowIndexVM

我没有指定Model是IEnumerable类型。以下代码完成了这个技巧

    @model IEnumerable<FarmManager.ViewModels.CowIndexVM>