Pergunta

Eu tenho várias páginas que contêm a mesma visão parcial. A parcial contém uma forma que as mensagens para uma acção. Depois de um post eu quero voltar para a página que eu estava antes do post. Qual é a melhor maneira de fazer isso?

Exemplo:

Vista Parcial: formar pós action = nota / criar /

Páginas

page1: products / index /

page2: cliente / details /

page3: ordem / detalhes /

Estes 3 páginas contêm a vista parcial, ao postar a parcial ele redireciona para nota / criar /. Eu preciso voltar para a página original em caso de sucesso.

Graças Simon

Foi útil?

Solução

Quer ter o cargo acontecer via AJAX - portanto, não sair da página, ou passar a corrente controller / action / id (ou a URL como um todo) como parâmetros para a ação que manipula o post. Veja abaixo um exemplo da mais tarde.

 <% 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...
 <% } %>

ou

 <% using (Html.BeginForm( ...,
         new { ReturnUrl = Url.Action( ViewContext.RouteData["action"],
                                       ViewContext.RouteData ) }, ... )) { %>

  ....
 <% } %>

Outras dicas

Você pode armazenar o endereço da página atual em um campo escondido e enviá-lo com Pós pedido.

Na sua opinião parcial:

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

Em seguida, recuperar o endereço da entrada escondida e redirecionar o usuário para ele.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top