partialview mvc another asp.net-mvc renderpartial

asp.net mvc - mvc - RenderPartial una vista desde otro controlador(y en otra carpeta)



renderpartial another controller (4)

¿No podría copiar los parciales en la carpeta compartida? Simplemente haga:

<% Html.RenderPartial("DefinitionDetails", i); %> <% Html.RenderPartial("DefinitionDetails", i); %> y

<% Html.RenderPartial("DefinitionEditActions"); %>

Tengo dos entidades de base de datos que debo representar y debo mostrarlas en una sola página.

Tengo algo como esto

Vistas Def ViewA ViewB Test ViewC

Quiero que ViewC muestre ViewA, que muestra ViewB.

Ahora mismo estoy usando algo como esto:

// View C <!-- bla --> <% Html.RenderPartial(Url.Content("../Definition/DefinitionDetails"), i); %> // View A <!-- bla --> <% Html.RenderPartial(Url.Content("../Definition/DefinitionEditActions")); %>

¿Hay algo mejor para hacer esto? Encuentro que enlazar con rutas de acceso relativas puede quemarte. ¿Algun consejo?

Cualquier oportunidad que pueda hacer algo como ...

Html.RenderPartial ("Definition", "DefinitionDetails", i); ?

Gracias por la ayuda


Puedes referirte a Vistas con rutas completas, como:

Html.RenderPartial("~/Views/Definition/DefinitionDetails")

Aún mejor, use la biblioteca T4MVC , que hace lo anterior y la hace (casi) tipificada con fuerza. Puede referirse a cualquier vista desde cualquier controlador o vista. Lo usas así:

Html.RenderPartial(MVC.Definition.Views.DefinitionDetails)

o

Html.RenderPartial(MVC.Definition.Views.DefinitionDetails, myModel)


Solo para aclarar que opciones funcionan exactamente:

1) La extensión del archivo de vista es necesaria si proporciona una ruta .

2) Si no proporciona una ruta, no proporcione la extensión.

Los siguientes ejemplos asumen archivos cshtml.

Usa RenderPartial en un bloque de código:

// This looks in default view folder, then shared, checking for .aspx, .cshtml etc Html.RenderPartial("DefinitionDetails"); // This looks in specified path and requires the extension Html.RenderPartial("~/Views/Definition/DefinitionDetails.cshtml");

Use Partial para la sintaxis de Razor en línea:

// This looks in default view folder, then shared, checking for .aspx, .cshtml etc @Html.Partial("DefinitionDetails") // This looks in specified path and requires the extension @Html.Partial("~/Views/Definition/DefinitionDetails.cshtml")

Nota: aparentemente, RenderPartial es un poco más rápido que Partial , pero también espero que los nombres de ruta completa sean más rápidos que permitir que MVC busque el archivo.

Si está produciendo parciales en un bucle (es decir, desde una colección en su modelo de vista), es probable que tenga que pasar por modelos de vista específicos:

p.ej

@foreach (var group in orderedGroups) { Html.RenderPartial("~/Views/ControllerName/ViewName.cshtml", group); }

Solo tuve que hacer todo esto en un proyecto y encontré que la respuesta marcada era un poco engañosa.


esto es funciona para mi

@Html.Partial("~/Views/NewsFeeds/NewsFeedPartial.cshtml")