最近MVCを使い始め、テストプロジェクトとして簡単な「ブログ」を作成しています。メインページにすべての投稿が表示され、クリックすると詳細ページに移動する基本的な構造があります。
comments
現在、ビュー内から投稿に(Comment.cs)を追加しようとしていHome/Details
ます。これには、基本的に1つのビューに2つのモデルが必要です。モデル1がPost
モデルで、モデル2がComment
モデルです。
- Post.csは、投稿の詳細を取得するために使用されます
- Comment.csは、投稿にコメントを追加するために使用されます
これは私の見解のコードですHome/details
:
@model MVCPortfolio.Models.Post
@{
ViewBag.Title = "Details";
}
<h2>@Model.Title - @Model.Author</h2>
<fieldset>
<legend>Posted on @Model.Date.ToShortDateString()</legend>
<div class="content">
@Model.Content
</div>
</fieldset>
<div class="comments">
<ul>
@foreach (var c in Model.Comments)
{
<li>
@c.Content - @c.Author
</li>
}
</ul>
</div>
<div class="newcomment">
@* @Html.EditorFor(model => model) *@
</div>
<p>
@*
@Html.ActionLink("New Comment", "Comment", new { id = Model.PostId })
*@
|
@Html.ActionLink("Back to List", "Index")
</p>
そして、これは私のホームコントローラーであり、そこからコメントを追加したいと思います。
private PortfolioEntities db = new PortfolioEntities();
//
// GET: /Home/
public ActionResult Index()
{
var posts = (from p in db.Posts
orderby p.Date
select p);
return View(posts);
}
public ActionResult Details(int id)
{
var post = (from p in db.Posts
where p.PostId == id
select p).Single();
return View(post);
}
[HttpPost]
public ActionResult Comment(Comment comment)
{
if (ModelState.IsValid)
{
db.Comments.Add(comment);
db.SaveChanges();
return RedirectToAction("Details");
}
return View(comment);
}
}
しかし、私が理解していないのは、にを追加する方法ですcomment
。post
新しいものを簡単に追加できますpost
(Create.cshtmlビューを参照)が、詳細ビューcomment
内からを追加する方法がわかりません。post
トーマス、お時間をいただきありがとうございます