私はコードでMVC3のチュートリアルを最初にやっています。基本的に私は3つのテーブル、投稿、コメント、ブログASP.NET MVC3セカンダリテーブルからタイトル名を表示
public class Blog
{
public int ID { get; set; }
public string Title { get; set; }
public string BloggerName { get; set; }
public virtual ICollection<Post> Posts { get; set; }
}
public class Comment
{
public int ID { get; set; }
public DateTime DateCreated { get; set; }
public string Content { get; set; }
public int PostID { get; set; }
public Post Post { get; set; }
}
public class Post
{
public int ID { get; set; }
public string Title { get; set; }
public DateTime DateCreated { get; set; }
public string Content { get; set; }
public int BlogID { get; set; }
public ICollection<Comment> Comments { get; set; }
}
を持っていると私はするblogidを持っている投稿ページにポストを表示したいです。だから、現時点での私のコントローラで私は、次の持っている: - Viewは、以下を有する
public ViewResult Index()
{
PostViewModel model = new PostViewModel();
model.Posts = db.Posts.ToList();
foreach (var item in model.Posts)
{
model.Blog = db.Blogs.Where(b => b.ID == item.BlogID).FirstOrDefault();
}
return View(model);
}
: -
@foreach (var item in Model.Posts) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.DateCreated)
</td>
<td>
@Html.DisplayFor(modelItem => item.Content)
</td>
<td>
@Html.DisplayFor(modelItem => modelItem.Blog.Title)
</td>
</tr>
}
は、私が知りたいことを取得する方法です投稿からのブログタイトル。それを動作させるための
foreach (var item in model.Posts)
{
model.Blog = db.Blogs.Where(b => b.ID == item.BlogID).FirstOrDefault();
}
- :私はこれを置き換えるためには何がありますか?あなたが直接
foreach (var post in model.Posts)
{
post.Blog = db.Blogs.FirstOrDefault(b => b.ID == item.BlogID);
}
こんにちはボグダン、私は答えとして、これは動作するために与えるつもりです。私はすでにBlogクラスからの投稿への参照があるので、PostクラスのBlogへの参照を追加したくないのですが、現時点では問題ないと思います。 – Johann