1

我在这里看到过这个问题,但它似乎与我的情况不同。我可能错了,但我们会看到的。

现在我正在用 MVC3 (C#) 创建一个博客类型的网站,我目前可以创建、编辑、删除等博客,一切正常。我正在使用 Code First EF,所以我不知道这有多重要。

我有一个 BlogPost 模型如下:

public class BlogPost
{
    public int id { get; set; }
    public string Title { get; set; }
    public DateTime DateCreated { get; set; }
    public ICollection<Topic> Topics { get; set; }
    public string Content { get; set; }
    public ICollection<Comment> Comments { get; set; }
}

和一个主题模型(每篇博文可以有多个主题)

public class Topic
{
    public int id { get; set; }
    public string Name { get; set; }
    public int PostId { get; set; }

    // navigation back to parent
    public BlogPost Post { get; set; }
}

然后是我的 DbContext 继承模型,其中包含我的所有模型:

public class MyModel : DbContext
{
    public DbSet<BlogPost> Posts { get; set; }
    public DbSet<Comment> Comments { get; set; }
    public DbSet<Topic> Topics { get; set; }

    public DbSet<AdminComment> AdminComments { get; set; }
    public DbSet<Bug> Bugs { get; set; }
}

目前 BlogController 使用默认的脚手架来创建/编辑/删除/细节

private MyModel db = new MyModel();

//
// GET: /Admin/Blog/

public ViewResult Index()
{
    return View(db.Posts.ToList());
}

我可以做些什么来传递另一个模型,所以在这个列表上说,它将显示与帖子相关的所有主题,并添加一个创建以将主题添加到您当前正在创建的帖子中?

4

1 回答 1

0

创建一个具有您希望视图能够看到的属性的外部对象,并将新对象用作您的模型。你几乎已经做到了这一点。只需将您的控制器更改为:

public ViewResult Index()
{
    return View(db);
}

现在视图可以访问所有内容。

于 2012-04-11T19:59:40.293 回答