如何将数组从模型传递到视图?

时间:2011-11-06 00:54:01

标签: database asp.net-mvc-3 entity-framework ef-code-first

我刚刚学习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,实体框架:代码优先,SqlServerCe.4.0。

2 个答案:

答案 0 :(得分:0)

默认情况下,Entity Framework不加载实体的关联,您需要明确指定它:

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

答案 1 :(得分: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; }
}

或将标签存储到以逗号/分号或任何适合您的解决方案分隔的字段