asp.net MVC Обрабатывает Частичный Ответ обратной передачи
-
12-09-2019 - |
Вопрос
У меня есть несколько страниц, содержащих один и тот же частичный вид.Фрагмент содержит форму, которая отправляет сообщение для действия.После публикации я хочу вернуться на страницу, на которой я был до публикации.Каков наилучший способ сделать это?
Пример:
Частичный вид:действие публикации формы = заметка/ создать/
Страницы
страница 1:продукты/индекс/
страница 2:клиент/подробная информация/
страница 3:заказ/детали/
Эти 3 страницы содержат частичный просмотр, при публикации частичного он перенаправляется на заметку /создать /.Мне нужно вернуться к исходной странице при успешном завершении.
Спасибо Саймон
Решение
Либо отправьте сообщение через AJAX, таким образом, не покидая страницу, либо передайте текущий контроллер / действие / id (или URL в целом) в качестве параметров действию, которое обрабатывает сообщение.Смотрите ниже пример более позднего варианта.
<% using (Html.BeginForm(...)) { %>
<input type='hidden'
name='currentController'
value='<%= ViewContext.RouteData["controller"] %>' />
<input type='hidden'
name='currentAction'
value='<%= ViewContext.RouteData["action"] %>' />
<input type='hidden'
name='<%= ViewContext.RouteData["id"] %>' />
...rest of form...
<% } %>
или
<% using (Html.BeginForm( ...,
new { ReturnUrl = Url.Action( ViewContext.RouteData["action"],
ViewContext.RouteData ) }, ... )) { %>
....
<% } %>
Другие советы
Вы можете сохранить текущий адрес страницы в скрытом поле и отправить его с запросом Post.
На ваш частичный взгляд:
<script type="text/javascript">
var field = document.getElementById("currentPage");
field.value=document.location.href;
</script>
<form method="post" action="note/create/">
...
<input type="hidden" value="" id="currentPage" name="currentPage" />
</form>
Затем извлеките адрес скрытого ввода и перенаправьте пользователя на него.