Я новичок в MVC, поэтому, пожалуйста, потерпите меня. : -)
У меня строго типизированное представление "История". Это представление (история) может иметь комментарии.
Я создал два представления (не частичные) для моего контроллера комментариев «ListStoryComments» и «CreateStoryComment», которые делают то, что подразумевают их имена. Эти представления включены в представление истории с использованием RenderAction, например ::
.
<!-- 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 }); %>
(я передаю Story 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();
}
}