ASP.NET MVC3显示辅助表中的标题名称
本文关键字:标题 NET MVC3 显示 ASP | 更新日期: 2023-09-27 18:21:24
我正在做一个关于MVC3的教程,先用代码。基本上我有3个表,文章,评论,和博客
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的帖子页面上显示一篇帖子。因此,在我的控制器中,目前我有以下内容:-
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();
}
让它工作?
感谢您的帮助和时间
您可以在Post模型中添加对博客的引用,而不是BlogId。
public class Post
{
public int ID { get; set; }
public string Title { get; set; }
public DateTime DateCreated { get; set; }
public string Content { get; set; }
public Blog Blog { get; set; }
public ICollection Comments { get; set; }
}
所以你的循环会变成:
foreach (var item in model.Posts)
{
item.Blog = db.Blogs.Where(b => b.ID == item.Blog.ID).FirstOrDefault();
}
将虚拟Blog
属性添加到Post
类后,您可以在视图中使用Blog.Title
。
我猜您只需要将模型的Blog
属性设置为其中一篇文章的博客(例如,第一篇文章,因为所有文章都属于同一博客)
var post = model.Posts.FirstOrDefault();
model.Blog = post == null ? null : db.Blogs.Where(blog => blog.ID == post.BlogID);
您可以直接指定博客实体发布
foreach (var post in model.Posts)
{
post.Blog = db.Blogs.FirstOrDefault(b => b.ID == item.BlogID);
}