C# と MVC 3 を独学で学ぼうとしています。
簡単なブログアプリを作って学んでいます。ブログの詳細ページで立ち往生しています。このページには投稿が表示され、問題なく動作します。つまり、投稿と投稿に対するコメントが表示されます。ただし、新しいコメントを追加するためのフォームを追加したいと考えています。
その方法は、ブログとコメント クラスの両方を含むビューモデルを作成することだと思います。その後、コメント コントローラーの create アクションを呼び出すコメント フォームを作成できるはずです。
ただし、「BlogDetailViewModel」タイプのモデルが必要なため、ブログ表示ページが表示されません。これは、「Blog」コントローラーの「詳細」アクションが「BlogDetailViewModel」ではなく「ブログ」モデルをビューに渡しているためだと思います。このエラーを修正するにはどうすればよいですか。
これがこの問題に対処する最善の方法ですか。
以下のすべてのコードを詳しく説明しています。
ブログコントローラー - Details メソッド
public ViewResult Details(int id)
{
Blog blog = db.Blogs.Find(id);
return View(blog);
}
ブログ.cs
public class Blog
{
public int BlogID { get; set; }
public string Title { get; set; }
public string Writer { get; set; }
[DataType(DataType.MultilineText)]
public string Excerpt { get; set; }
[DataType(DataType.MultilineText)]
public string Content { get; set; }
[DataType(DataType.Date)]
public DateTime PublishDate { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
}
コメント.cs
public class Comment
{
public int CommentID { get; set; }
public string Name { get; set; }
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[DataType(DataType.MultilineText)]
public string CommentBody { get; set; }
public int BlogID { get; set; }
public virtual Blog Blog { get; set; }
}
BlogDetailViewModel.cs
public BlogDetailViewModel
{
public Blog Blog{ get; set; }
public Comment comment{ get; set; }
}
ブログの詳細ビュー
@model NPLHBlog.ViewModels.BlogDetailViewModel
@{
ViewBag.Title = @Model.Blog.Title;
}
....
ブログの詳細ビューからすべてをコメントアウトして、タイトルだけを残そうとしました。しかし、それでもうまくいきません。
どんな助けでも感謝します。