2009-07-24 9 views
0

J'utilise RenderAction pour inclure la sortie de plusieurs "composants" dans mon affichage. Mais à chaque fois que j'utilise les appels RenderAction à ActionLink dans l'action imbriquée, les itinéraires erronés sont produits. (Idem pour RouteLink.) Si l'action est appelée directement, les routes correctes sont produites.ActionLink dans RenderAction

Je demande donc l'action à plusieurs reprises dans l'action index de mon point de vue parent:

<% Html.RenderAction<StateAdminController>(c => c.Index(StateType.Event)); %> 
<% Html.RenderAction<StateAdminController>(c => c.Index(StateType.Booking)); %> 
<% Html.RenderAction<StateAdminController>(c => c.Index(StateType.Communication)); %> 
<% Html.RenderAction<StateAdminController>(c => c.Index(StateType.Payment)); %> 

Et dans le Nested Index-View J'essaie de faire un ActionLink à Edit méthode de la StateAdminController:

Mais le lien ActionLink pointe vers l'index-action de ma vue parente
<%= Html.ActionLink<StateAdminController>(c => c.Edit(state.Id), "Bearbeiten") %> 

Est-ce un problème connu? Puis-je faire quelque chose de mal? Comment ActionLinks devrait être fait, quand l'action est appelée à partir de RenderAction?

Merci d'avance.
Cordialement.

Joachim

+0

Pourriez-vous poster un message s'il vous plait? – griegs

Répondre

0

Vous avez mentionné les routes. Il est à noter que lorsque vous utilisez RenderAction, le contrôleur est appelé directement (c'est-à-dire pas à partir d'une URL). Par conséquent, il ne passe pas par votre table de routage.

+0

Oui, je voulais dire les routes/liens émis par le contrôleur imbriqué. Par exemple. par la méthode d'assistance Html.ActionLink. –

+0

J'ai un peu de mal à me faire une idée ... Pouvez-vous donner des exemples d'itinéraires/urls prévus et réels? –

0

Je préférerais concevoir mon modèle en vue de contenir des propriétés pour toutes les variantes, puis appelez RenderPartial():

<% Html.RenderPartial("StateAdmin", Model.Event); %> 
<% Html.RenderPartial("StateAdmin", Model.Booking); %> 
<% Html.RenderPartial("StateAdmin", Model.Communication); %> 
<% Html.RenderPartial("StateAdmin", Model.Payment); %> 

Ou même aller de fantaisie avec ma propre méthode d'extension qui fait une boucle à travers une collection et appeler RenderPartial() pour chacun :

<% Html.RenderPartials("StateAdmin", Model.StateTypes); %> 

Alors que RenderAction() le tour est joué, appelant et rendre une action de la vue semble un peu mal pour moi. La vue est déjà le résultat d'une action.

Questions connexes