asp.net MVC Handle parcial Postback Response
-
12-09-2019 - |
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
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.