asp.net MVC Обрабатывает Частичный Ответ обратной передачи

StackOverflow https://stackoverflow.com/questions/1119741

  •  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>

Затем извлеките адрес скрытого ввода и перенаправьте пользователя на него.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top