さて、コメントを完全に機能させようとしている半作業ブログがあります。現在、すべての投稿が、対応するすべてのコメントとともに正しく表示されています。これに関する 1 つの問題は、サイトから実際にコメントを追加できないことです (手動で行っているだけです)。
以前にコントローラーで「作成」メソッドを作成しましたが、自動スキャフォールディングのみでした。
現在、次のように ViewModel をページに渡します (これにより、ブログ投稿自体に関連付けられたトピックとコメントが取得されます。
public ActionResult Post(int id)
{
var post = (from p in db.Set<BlogPost>()
where p.id == id
select new PostViewModel
{
Id = p.id,
Title = p.Title,
DateCreated = p.DateCreated,
Content = p.Content,
Topics = p.Topics,
Comments = p.Comments,
CommentCount = p.Comments.Count
}).Single();
return View(post);
}
次に、これを Post.cshtml として持っています...
<div class="blogpost">
<h2>@Model.Title</h2>
<div class="post_info">@Model.DateCreated<span class="right">Blog</span></div>
<p>@Html.Raw(Model.Content)</p>
<div class="post_close">
<span class="left">
@foreach (var topic in Model.Topics)
{
<text>@Html.DisplayFor(modelItem => topic.Name) </text>
}
</span>
<span class="right">
<img src="../../Content/images/comment.jpg" alt="" />
@if (Model.CommentCount > 1 || Model.CommentCount == 0)
{
@Model.CommentCount <text>comments</text> }
else
{
@Model.CommentCount <text>comment</text>
}
</span>
</div>
</div>
<div id="comments">
@foreach (var comment in Model.Comments)
{
<b>@Html.DisplayFor(modelItem => comment.Name)</b> <text>says... </text><br />
<i>@Html.DisplayFor(modelItem => comment.Content)</i><br />
}
</div>
「コメント」の div に、人々が新しいコメントを作成する方法を追加したいと考えています。明らかに、これは単なるコメント モデルではなくモデルである ViewModel を使用した従来の方法では行われません。ここから始めるべきアドバイスはありますか?
私は基本的に MVC3 に不慣れで、ポストバックの全体的な考え方は、Web フォームで慣れていたものと比べて非常に混乱しています。どんな助けでも役に立ちます、ありがとう!
(誰かが必要とするかもしれない追加情報でこの投稿を編集します)