2011-05-19 33 views
77

Estoy desarrollando una aplicación ASP.NET MVC 3, cuyas páginas de contenido tienen un patrón común de elementos de diseño. Sin embargo, como la página de inicio de sesión no sigue este diseño, no puedo ubicar este diseño en \Views\Shared\_Layout.cshtml.Llamar a @ Html.Partial para mostrar una vista parcial perteneciente a un controlador diferente

Así que me gustaría agregar otro diseño compartido, por ejemplo, \Views\Shared\_Content.cshtml, y llamarlo desde las vistas de contenido ... pero desafortunadamente esas vistas pertenecen a diferentes controladores.

¿Hay alguna manera de invocar @Html.Partial para una vista perteneciente a un controlador diferente?

+0

¿Alguien puede por favor tener el coraje de rechazar mis estúpidas preguntas? No puedo hacerlo yo mismo. – pyon

+0

Debería poder votar para cerrar su propia pregunta. https://meta.stackexchange.com/questions/163375/vote-to-close-ow-question –

Respuesta

139

Eso no es problema.

@Html.Partial("../Controller/View", model) 

o

@Html.Partial("~/Views/Controller/View.cshtml", model) 

debe hacer el truco.

Si desea pasar a través de la (otra) controlador, puede utilizar:

@Html.Action("action", "controller", parameters) 

o cualquiera de las otras sobrecargas

+8

¿Por qué @ Html.Partial ("~ Views/Controller/View", modelo) necesita la extensión .cshtml? De lo contrario, dice que no se encuentra la vista. – ashes999

+2

Resharper 6.1 indica '@ Html.Partial (" ../ Controller/View ", modelo)' como un error, pero no '@ Html.Partial (" ~/Views/Controller/View.cshtml ", model)'. Ambos funcionan bien en tiempo de ejecución. –

+0

@GVs IF windows está usando \ para directorio, entonces por qué usa /. Cualquier razón – Adrian

6

Como dijo GVS, sino que también me resulta útil el uso de strongly typed views para que pueda escribir algo como

@Html.Partial(MVC.Student.Index(), model) 

sin cadenas mágicas.

+11

Con Resharper, ya no se sienten mágicos :) –

Cuestiones relacionadas