0
ASP.NET MVCコアをEF 1.1.0とLocalDBで使用し、ブログID(URLから取得)を検索してから送信しますブログの投稿一覧を表示します。ASP.NET MVCコアの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>
と私は、空のテーブルを取得...誰でも助けることができますか?
ありがとうございました。
おかげに変更する必要があります!それは動作します。インクルード(「投稿」)の部分は、ブログの後にある必要があり、最後ではありません。 – abcde
一般的に正しいですが、 'Include'は' .SingleOrDefault'の前にあるべきです。 –
ありがとう、更新された回答 –