2009-07-13 5 views
0

J'ai plusieurs pages contenant la même vue partielle. Le partiel contient un formulaire qui enregistre dans une action. Après un post, je veux revenir à la page où j'étais avant le post. Quelle est la meilleure façon de faire cela?asp.net MVC Handle Réaction de retour partielle

Exemple:

Vue partielle: form action post = Note/créer/

Pages

page1: produits/index/

page2: client/détails/

page3: order/détails/

Ces 3 pages contiennent la vue partielle, lors de la publication du partiel qu'il redirige vers note/create /. Je dois retourner à la page d'origine en cas de succès.

Merci Simon

Répondre

2

ont soit le poste se produire via AJAX - donc pas quitter la page, ou passer le régulateur de courant/action/id (ou l'URL dans son ensemble) en tant que paramètres à l'action que les poignées la poste. Voir ci-dessous pour un exemple de ce dernier.

<% 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) }, ...)) { %> 

    .... 
<% } %> 
1

Vous pouvez mémoriser l'adresse de la page courante dans un champ caché et l'envoyer à la demande Post.

Dans votre vue partielle:

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

Prenez ensuite l'adresse de l'entrée cachée et redirigent l'utilisateur vers elle.

Questions connexes