ASP.NET MVC 4 Áreas en proyectos separados que no funcionan(vista no encontrada)
asp.net-mvc-4 asp.net-mvc-areas (1)
He intentado crear un sitio web de ASP.NET MVC 4 simple de prueba de concepto utilizando áreas en proyectos separados.
Intenté seguir los tutoriales: http://bob.archer.net/content/aspnet-mvc3-areas-separate-projects (la aplicación no funciona en el directorio virtual ... uso IIS). Espero que haya mejor manera que directorios virtuales.
Luego probé este tutorial: http://forums.asp.net/t/1483660.aspx/1 Pero no hay un elemento "AreasManifestDir" en * .csproj del proyecto del área (y se obtuvo el error "La vista ''Índice'' o su no se encontró el maestro o ningún motor de vista admite las ubicaciones buscadas ")
¿Todavía hay soporte en ASP.NET para MVC 4? Porque encontré esta respuesta que puede ser eliminada en el futuro: ¿Cuáles son los pros y los contras de Áreas implementadas como proyectos únicos frente a múltiples proyectos en asp.net mvc?
No he encontrado ningún manual de instrucciones para MVC4.
La estructura de la solución es simple:
Solution ''MvcAreasMultiProject''
Areas [Directory]
Admin [Project]
Models
Views
Controllers
Routes.cs [Examples]
MvcAreasMultiProject [MainProject]
- References Admin project
M.V.C
Routes.cs del proyecto de administración:
namespace Admin
{
public class Routes : AreaRegistration
{
public override string AreaName { get { return "Admin"; } }
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_Default",
"Admin/{action}/{id}",
new { controller = "Admin", action = "Index", id = "" },
new[] { "Admin.Controllers" }
);
}
}
}
¡Gracias por cualquier ayuda!
Podría usar el paquete RazorGenerator para incrustar sus vistas de Razor en un conjunto separado. Aquí están los pasos para hacer este trabajo:
- Instala la extensión de
Razor Generator
Visual Studio (Herramientas -> Extensiones y actualizaciones ...) - Cree una nueva aplicación ASP.NET MVC 4 usando la plantilla vacía.
- Agregue un nuevo proyecto de biblioteca de clases a la solución llamada
AreasLibrary
(también puede usar una plantilla de proyecto MVC de ASP.NET para obtener Intellisense en las vistas de Razor) - Instale
RazorGenerator.Mvc
NuGet en el proyectoAreasLibrary
. Agregue un controlador dentro del proyecto
AreasLibrary
(~/Areas/Admin/Controllers/HomeController.cs
):public class HomeController: Controller { public ActionResult Index() { return View(); } }
Agregue una vista correspondiente (
~/Areas/Admin/Views/Home/Index.cshtml
):@* Generator: MvcView *@ @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>View1</title> </head> <body> <div> Index view </div> </body> </html>
En las propiedades de la vista, configure la
Custom Tool
enRazorGenerator
.Dentro de la biblioteca de clases agregue un
~/Areas/AdminAreaRegistration.cs
:public class AdminAreaRegistration : AreaRegistration { public override string AreaName { get { return "Admin"; } } public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Admin_Default", "Admin/{action}/{id}", new { controller = "Home", action = "Index", id = "" } ); } }
Todo lo que queda es hacer referencia a la biblioteca de clases en la aplicación principal MVC.
Referencia: http://blog.davidebbo.com/2011/06/precompile-your-mvc-views-using.html