2012-08-10 24 views
12

Tengo una vista parcial como parte de _Layout.cshtml, por lo que se procesa en varias páginas. Piense en la vista parcial como un menú que se muestra en todas las páginas del sitio web.Cómo obtener la vista padre desde la vista parcial

Cuando se hace clic en uno de estos enlaces en el menú de la vista parcial, sólo puedo acceder/ver en el método de acción que es llamada la vista parcial, como su nombre, etc.

Pero lo que realmente necesita tener es la Vista que la vista parcial estaba encendida cuando se hizo clic en el elemento.

¿Cómo puedo obtener esto?

+0

Si he entendido bien. .usted quiere obtener el nombre de t él ve que la vista parcial está siendo renderizada? ¿No se representa en el diseño? –

+0

Correcto: estoy en una página determinada que tiene la vista parcial, y quiero saber cuál es esa página determinada. Estos enlaces de los que estaba hablando son configuraciones de idioma, por lo que quiero configurar el idioma en el método de acción y luego redireccionar a la página de donde vino (en otro idioma). Para hacer esto, tengo un controlador separado para manejar esto, pero solo obtengo la vista parcial, no la vista en la que estaba. –

Respuesta

22

Puede utilizar ParentActionContext

Por ejemplo

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

actualización

En la vista de esta llamada debe hacer lo que tiene

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

ParentActionViewContext parece ser nulo en mi método de acción, así que no hay suerte ... + Spaceballs es genial - "¡No te vi jugando con tus muñecas otra vez!" –

+0

Creo que mi error es que el código funciona en el controlador, he actualizado para usar una llamada diferente desde la vista (BTW Sapeceball FTW :)) – Iridio

Cuestiones relacionadas