2009-07-24 15 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.