У меня есть вид, который отображает список комментариев. Это делается через DisplayTemplate. Все, что мне нужно сделать, это что-то вроде @Html.DisplayFor(x => x.BlogPost.PostComments)
, и все комментарии отображаются соответствующим образом.
Внизу страницы есть форма для добавления нового комментария. Эта страница использует прогрессивное улучшение. Таким образом, если javascript отключен, то форма отправляется как обычно, добавляет комментарий в базу данных, а затем перенаправляет на действие, которое отображает сообщение в блоге. Однако, если javascript доступен, то jQuery захватывает отправку формы и отправляет сообщение через ajax. Ну, поскольку разметка комментария находится в шаблоне отображения, я не знаю, как вернуть его из метода действия, чтобы jQuery мог отбросить его на странице.
Я знаю, как сделать это с частичным представлением. Мне просто нужно, чтобы метод действия вернул правильное частичное представление, а jquery добавил бы ответ к контейнеру комментариев на странице.
Прежде чем я выберу свой шаблон отображения в пользу частичного просмотра, есть ли прямой способ, которым я не могу отправить обратно шаблон отображения из контроллера?
Вот мой метод действия:
public ActionResult AddComment(PostComment postComment)
{
postComment.PostedDate = DateTime.Now;
postCommentRepo.AddPostComment(postComment);
postCommentRepo.SaveChanges();
if (Request.IsAjaxRequest())
return ???????
else
return RedirectToAction("BlogPost", new { Id = postComment.BlogPostID });
}
Когда страница загружается, ей не нужно об этом беспокоиться, поскольку она использует шаблоны стандартным образом:
<div class="comments">
@Html.DisplayFor(x => x.BlogPost.BlogPostComments)
</div>
Я просто хочу знать, как я могу отправить один комментарий, который использует шаблон отображения, обратно в jQuery.