2012-08-10 17 views
12

Ho una vista parziale come parte di _Layout.cshtml, in modo che venga visualizzata in più pagine. Pensa alla vista parziale come a un menu che viene visualizzato su ogni pagina del sito web.Come ottenere la vista genitore dalla vista parziale

Quando uno di questi link nel menu della vista parziale viene cliccato, posso solo accesso/vedere nel metodo d'azione che viene chiamata la vista parziale, come il suo nome, ecc

Ma quello che ho davvero bisogno avere è la vista che la vista parziale era attiva quando l'oggetto è stato cliccato.

Come posso ottenere questo?

+0

Se ho capito bene. . vuoi ottenere il nome di t egli vede che la vista parziale viene resa attiva? Non è reso nel layout? –

+0

Esatto: sono su una certa pagina che ha la vista parziale, e voglio sapere qual è quella determinata pagina. Questi collegamenti di cui stavo parlando sono le impostazioni della lingua, quindi voglio impostare la lingua nel metodo di azione e quindi reindirizzare nuovamente alla pagina da cui proviene (in una lingua diversa). Per fare questo, ho un controller separato per gestire questo, ma ottengo solo la vista parziale, non la vista su cui era. –

risposta

22

È possibile utilizzare ParentActionContext

Per esempio

var controller = ControllerContext.ParentActionViewContext.RouteData.Values["Controller"] as string; 
var action = ControllerContext.ParentActionViewContext.RouteData.Values["Action"] as string; 

Aggiornamento

Dal punto di vista questa chiamata dovrebbe fare ciò che è necessario

@HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString() 
@HttpContext.Current.Request.RequestContext.RouteData.Values["action"].ToString() 
+0

ParentActionViewContext sembra essere nullo nel mio metodo di azione, quindi non c'è fortuna ... + Spaceballs è fantastico - "Non ti ho visto giocare di nuovo con le tue bambole!" –

+0

Penso che il mio errore sia che il codice funzioni nel controller, ho aggiornato per utilizzare una chiamata diversa dalla vista (BTW Sapeceball FTW :)) – Iridio

Problemi correlati