0
我使用帶有EF 1.1.0和LocalDB的ASP.NET MVC Core,並嘗試搜索博客ID(從url GET獲得),然後發送到查看博客的帖子列表。在ASP.NET MVC Core中從EF映射類返回列表視圖
大部分代碼都來自微軟文檔示例。
DB語境:
public class BloggingContext : DbContext
{
public BloggingContext(DbContextOptions<BloggingContext> options)
: base(options)
{ }
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
}
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public List<Post> Posts { get; set; }
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
控制器:
public class BlogsController : Controller
{
private readonly BloggingContext _context;
public BlogsController(BloggingContext context)
{
_context = context;
}
// GET: Blogs/Details/5
public async Task<IActionResult> Details(int? id)
{
if (id == null)
{
return NotFound();
}
var blog = await _context.Blogs
.SingleOrDefaultAsync(m => m.BlogId == id);
if (blog == null)
{
return NotFound();
}
return View(blog.Posts); // HERE IS PROBABLY THE PROBLEM
}
}
查看:
@model IEnumerable<EFGetStarted.AspNetCore.NewDb.Models.Post>
<h2>Details</h2>
<table>
@foreach (var item in Model) {
<tr>
<td>
@item.Title
</td>
</tr>
}
</table>
,我得到一個空表..誰能幫助?
謝謝。
謝謝!這樣可行。 Include(「Posts」)部分需要位於「博客」之後,而不是末尾。 – abcde
一般正確,但'Include'應該在'.SingleOrDefault'之前。 –
感謝您收到該更新後的答案 –