1

この質問がここで尋ねられたのを見たことがありますが、私の状況とは違うようです。私はそれについて間違っているかもしれませんが、見てみましょう。

現在、MVC3 (C#) でブログ タイプの Web サイトを作成しています。現在、ブログの作成、編集、削除などを問題なく行うことができ、すべてが機能しています。私は 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 は create/edit/delete/details にデフォルトの scaffolding を使用しています

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 に答える