¿Cómo puedo tener una visión rinde un (control de usuario) parcial de una carpeta diferente? Con previsualización 3 Solía llamar RenderUserControl con la ruta completa, pero un poco con la actualización a Vista previa 5 este ya no es posible. En su lugar tenemos el método RenderPartial, pero no me ofrece la funcionalidad que estoy buscando.Render parcial de carpeta diferente (no compartida)
Respuesta
basta con incluir la ruta a la vista, con la extensión de archivo.
Razor: Motor de
@Html.Partial("~/Views/AnotherFolder/Messages.cshtml", ViewData.Model.Successes)
ASP.NET:
<% Html.RenderPartial("~/Views/AnotherFolder/Messages.ascx", ViewData.Model.Successes); %>
Si ese no es el problema, ¿podría por favor incluya su código que utiliza para trabajar con el RenderUserControl?
VirtualPathProviderViewEngine, en el que se basa WebFormsViewEngine, se supone que admite los caracteres "~" y "/" en la parte frontal de la ruta para que los ejemplos anteriores funcionen.
me di cuenta de sus ejemplos utilizan el camino "~/Cuenta/myPartial.ascx", pero mencionó que el control de usuario se encuentra en la carpeta Vistas/Cuenta. ¿Ha intentado
<%Html.RenderPartial("~/Views/Account/myPartial.ascx");%>
o es que sólo un error tipográfico en su pregunta?
Para un control de usuario llamado myPartial.ascx situada en Vistas/Cuenta carpeta escribir así:
<%Html.RenderPartial("~/Views/Account/myPartial.ascx");%>
deberías probar este
~/Views/Shared/parts/UMFview.ascx
lugar el ~/Views/
antes de su código
Trate de usar RenderAction("myPartial","Account");
Por favor Lea la pregunta que el usuario está preguntando por la vista de carpeta diferente, donde es la carpeta en su código? Del mismo modo – Pamma
he crear d una solución alternativa que parece funcionar bastante bien. He encontrado la necesidad de cambiar al contexto de un controlador diferente para la búsqueda de nombre de la acción, vista de búsqueda, etc. Para implementar esto, he creado un nuevo método de extensión para HtmlHelper
:
public static IDisposable ControllerContextRegion(
this HtmlHelper html,
string controllerName)
{
return new ControllerContextRegion(html.ViewContext.RouteData, controllerName);
}
ControllerContextRegion
se define como:
internal class ControllerContextRegion : IDisposable
{
private readonly RouteData routeData;
private readonly string previousControllerName;
public ControllerContextRegion(RouteData routeData, string controllerName)
{
this.routeData = routeData;
this.previousControllerName = routeData.GetRequiredString("controller");
this.SetControllerName(controllerName);
}
public void Dispose()
{
this.SetControllerName(this.previousControllerName);
}
private void SetControllerName(string controllerName)
{
this.routeData.Values["controller"] = controllerName;
}
}
la forma en que se utiliza dentro de una vista es el siguiente:
@using (Html.ControllerContextRegion("Foo")) {
// Html.Action, Html.Partial, etc. now looks things up as though
// FooController was our controller.
}
puede haber efectos secundarios no deseados para esto si su código requiere el controller
componente de ruta para no cambiar, pero en nuestro código hasta ahora, no parece haber ningún aspecto negativo en este enfoque.
En mi caso estaba usando MvcMailer (https://github.com/smsohan/MvcMailer) y quería acceder a una vista parcial desde otra carpeta, que no estaba en "Compartido". Las soluciones anteriores no funcionaron, pero utilizaron una ruta relativa sí.
@Html.Partial("../MyViewFolder/Partials/_PartialView", Model.MyObject)
@ Html.Partial ("../ Común/_PartialView") para utilizar la carpeta compartida. –
estoy encontrando que esto no funciona sin la extensión .cshtml al final. – Luke
Si está utilizando esta otra ruta la mayor parte del tiempo, puede arreglar esto permanentemente sin tener que especificar la ruta todo el tiempo. De forma predeterminada, está verificando vistas parciales en la carpeta Ver y en la carpeta Compartido. Pero di que quieres agregar uno.
Añadir una clase a la carpeta de modelos:
public class NewViewEngine : RazorViewEngine {
private static readonly string[] NEW_PARTIAL_VIEW_FORMATS = new[] {
"~/Views/Foo/{0}.cshtml",
"~/Views/Shared/Bar/{0}.cshtml"
};
public NewViewEngine() {
// Keep existing locations in sync
base.PartialViewLocationFormats = base.PartialViewLocationFormats.Union(NEW_PARTIAL_VIEW_FORMATS).ToArray();
}
}
A continuación, en el archivo de Global.asax.cs, agregue la siguiente línea:
ViewEngines.Engines.Add(new NewViewEngine());
Por supuesto, me doy cuenta de que esta pregunta fue hecha hace mucho tiempo. Pensé que lo agregaría para futuros Googlers y futuros Bingers. – Paul
- 1. Rails parcial en modal (render parcial desde diferente modelo)
- 2. Render parcial de helper_method
- 3. Render @object y locals vs render: parcial
- 4. Combinación de link_to con render: parcial
- 5. Render View (o Parcial) ¿En otro proyecto?
- 6. Griales Render plantilla diferente Controlador/Ruta
- 7. Renderizar formulario parcial en un controlador diferente (no anidado)
- 8. Asp.net MVC - Render una vista parcial de un área
- 9. Render parcial: Colección => @array especificar nombre de la variable
- 10. URL de una carpeta compartida de Windows
- 11. Cap despliegue no crea la carpeta compartida/registro
- 12. Rails 3 render parcial desde otro controlador (error: ActionView :: MissingTemplate)
- 13. Render vista parcial onclick en asp.net mvc 3 proyecto
- 14. Symfony incluyen parcial de la carpeta personalizada
- 15. Carpeta compartida en VirtualBox para Apache
- 16. Renderizado parcial desde otra carpeta desde otro parcial en Rails 3
- 17. ceda si el contenido, render algo diferente (Rails 3)
- 18. render parciales en las plantillas ActionMailer
- 19. render usercontrol (cshtml) usando @ Html.Partial
- 20. variable compartida entre dos subprocesos se comporta de manera diferente a la propiedad compartida
- 21. MEF cargar complementos desde una carpeta compartida de red
- 22. render: json no acepta opciones
- 23. prestación parcial no se muestra
- 24. Carpeta diferente como subcarpeta del sitio web
- 25. Copiar carpeta usando Copiar-Elemento - comportamiento diferente
- 26. Monte la carpeta compartida (vbox) como otro usuario
- 27. conectar a la carpeta compartida en Windows con Java
- 28. ASP.NET MVC Uso de Render Parcial desde dentro de Html Helper
- 29. Razor - Render sin Render() y sin Codificación
- 30. Ruby on Rails: Render HTML parcial como una línea de cadena
Me gustaría poder decir simplemente/AnotherFolder/Mensajes –
@Simon_Weaver Usted puede lograr eso. Una forma sería la de modificar y anular ViewEngine es 'método FindPartialView' con algo como' si partialViewName.Contains ("/") partialViewName = "~/Vistas /" + partialViewName; ' –
Obras en el motor de la maquinilla de afeitar MVC 3, así, pero al igual que el anterior, necesita la extensión (.cshtml). – Chris