私はMVCが初めてなので、ご容赦ください。:-)
強く型付けされた「ストーリー」ビューがあります。このビュー (ストーリー) にはコメントを付けることができます。
コメント コントローラー "ListStoryComments" と "CreateStoryComment" の 2 つのビュー (部分ビューではない) を作成しました。これらのビューは、RenderAction を使用して Story ビューに含まれます。
<!-- List comments -->
<h2>All Comments</h2>
<% Html.RenderAction("ListStoryComments", "Comments", new { id = Model.Story.Id }); %>
<!-- Create new comment -->
<% Html.RenderAction("CreateStoryComment", "Comments", new { id = Model.Story.Id }); %>
(関連するコメントを一覧表示するためにストーリー ID を渡します)。
フォームを使用して新しいコメントを投稿すると、現在の (親) ビューが返されますが、コメントフォームフィールドには最後に入力したコンテンツが表示され、ListStoryComments ビューは更新されません。新しいストーリーを表示します。
基本的に、ブラウザの戻るボタンを押したかのように、ページはキャッシュから読み込まれます。f5 を押すと、フォームを再投稿しようとします。ページを手動で再読み込み (ブラウザーのアドレス バーに URL を再入力) してから f5 キーを押すと、新しいコンテンツと空のフォーム フィールドが表示されます。これが目的の結果です。
完全を期すために、私の CreateStoryComment アクションは次のようになります。
[HttpPost]
public ActionResult CreateStoryComment([Bind(Exclude = "Id, Timestamp, ByUserId, ForUserId")]Comment commentToCreate)
{
try
{
commentToCreate.ByUserId = userGuid;
commentToCreate.ForUserId = userGuid;
commentToCreate.StoryId = 2; // hard-coded for testing
_repository.CreateComment(commentToCreate);
return View();
}
catch
{
return View();
}
}