2011-11-06 72 views
0

我刚刚学习ASP.NET MVC 3,最近我尝试了很多次传递数组/列表/ ICollections等,但不能。每次列表都是空的。如何将数组从模型传递到视图?

例如,目前项目:

型号:

public class Video 
{ 
    public int VideoID { get; set; } 
    public string Name { get; set; } 
    public ICollection<string> Tags { get; set; } 
} 

初始化器 - 种子:

protected override void Seed(DatabaseContext context) 
    { 
     var videos = new List<Video> 
     { 
      new Video { 
       Name = "Video01", 
       Tags = new List<string> { "tag1", "tag2" }, 
     }; 

     videos.ForEach(s => context.Videos.Add(s)); 
     context.SaveChanges(); 

     base.Seed(context); 
    } 

在视图:我得到了Name财产,但Tags是完全空的。

在调试中我得到Tags - Count: 0

这不是第一次发生在我身上,说实话,每当我尝试通过这些东西时都会发生这种情况。关于该项目的一些信息:

ASP.NET MVC 3,Entity-Framework:Code First,SqlServerCe.4.0。

回答

0

克林实体标签

public class Video 
{ 
    public int VideoID { get; set; } 
    public string Name { get; set; } 
    public ICollection<Tag> Tags { get; set; } 
} 

public class Tag 
{ 
    public int TagId { get; set; } 
    public int VideoId { get; set; } 
    public string TagText { get; set; } 
} 

或商店标签,一个场分离用逗号/分号或任何适合你的解决方案

0

默认情况下,实体框架不会加载实体的关联,你需要明确指定:

var videos = context.Videos.Include("Tags"); 
+0

我在哪里写它? (我怎么写它+视频列表),当你说ef不加载实体的关联时,你是什么意思的协会? 谢谢 – MasterMastic

+0

事实上,我误解了这个问题,我认为标签也是EF实体......你是如何映射“标签”集合的? –

+0

初学者,你能解释一下你在问什么吗?我认为你的意思是模型,如果是这样的话,那就是问题所在。 – MasterMastic