2009-06-30 2 views
2

J'utilise RenderAction pour rendre un partiel qui est utilisé partout sur mon site.RenderAction doit se comporter différemment en fonction de la page contenant

C'est un partiel où l'utilisateur peut rechercher une entité. Cela dépend du Contrôleur/Action qui a rendu la vue principale parente ce qui est fait une fois l'entité trouvée.

Disons que j'ai les contrôleurs:

HireController, FireController avec action ActOnPerson et

PersonnesController avec action FindPerson qui rend le FindPerson

partielle Les vues sont Location/SearchPerson.aspx et Fire/SearchPerson.aspx

Chaque vue contient l'aide:

<%Html.RenderAction("FindPerson ", "People"); %> 

La forme que les messages à HireController/FireController est contenu dans la partie. Il doit en être ainsi, car il y a en fait quelques étapes (postes de formulaire) impliquées dans la recherche d'une personne.

Existe-t-il un moyen de décider à l'intérieur du FindPerson partiel si le formulaire doit être publié dans FireController ou HireController? Je suppose que je cherche quelque chose comme les propriétés publiques de WebControls mais pour RenderAction.

Répondre

2

Il suffit d'ajouter le paramètre ("PostTo" ou "Next") à People.FindPerson Action:

<% Html.RenderAction("FindPerson ", "People", new { next = Url.Action("ActOnPerson", "HireController") }); %> 

<!-- or --> 

<% Html.RenderAction("FindPerson ", "People", new { nextaction = "ActOnPerson", nextcontroller = "HireController" }); %> 

En FindPerson PartialView:

<form method="post" action="<%= ViewData["next"].ToString() %>"> 

<!-- or --> 

<% using (Html.BeginForm(
    ViewData["nextaction"].ToString(), ViewData["nextcontroller"].ToString()) { %> 
Questions connexes