mvc bootstrap asp.net-mvc asp.net-mvc-3 plugins razor

asp.net-mvc - bootstrap - mvc c#



¿Cómo crear el área de ASP.NET MVC como un DLL de complemento? (3)

Puede echar un vistazo al siguiente artículo que ilustra cómo se podría usar un VirtualPathProvider personalizado para recuperar las vistas de Razor que están incrustadas en ensamblajes separados como recursos.

Esto es lo que quiero lograr, quiero separar ÁREAS de ASP.NET MVC como DLL simple.

  1. Blog.DLL
  2. Foros.DLL
  3. FAQ.DLL

Cada uno de ellos es un área de ASP.NET MVC individual, con sus propias páginas CSHTML o ASPX predeterminadas. Instalar, migrar y mantener muchas páginas, incluidos recursos, javascripts, etc., es un verdadero problema para el largo plazo. Como la mayoría de estos apenas cambiará.

Mi sitio web final será así.

/MvcApplication /bin /MvcApplication.bin /Blog.dll /Forums.dll /Controllers /.. /Models /.. /Views /.. /Global.asax /Web.config

Sin agregar nada, simplemente soltar Blog.dll, mi aplicación debería admitir / blog y todas sus páginas. Si quiero personalizar algo, entonces puedo agregar área, y solo agregar páginas cshtml.

/MvcApplication /bin /MvcApplication.bin /Blog.dll /Forums.dll /Areas /Blog /Views /Shared /BlogLayout.cshtml <-- this will override the look /Controllers /.. /Models /.. /Views /.. /Global.asax /Web.config

Esto ayudará a reutilizar los complementos del área ASP.NET, simplemente colocando la dll en la carpeta bin. Sin embargo, web.config puede requerir algunos cambios, pero lo más probable es que guardemos los valores de configuración en la base de datos y lo único que se necesita será la "cadena de conexión Entity Framework" en web.config.

Mis retos (Preguntas)

  1. ¿Es posible? Seguro que me parece, pero ¿habrá problemas de reflexión / permiso?
  2. ¿Cómo incluyo las vistas cshtml / aspx dentro de una DLL? Probablemente versiones compiladas? He visto un par de plantillas de texto basadas en View Engines en codeplex pero estoy un poco confundido sobre cómo usarlas realmente.
  3. ¿Y cómo consigo que ViewEngine primero verifique si el archivo del directorio físico existe o no y luego ver cshtml / aspx dentro de la propia dll como archivo de recursos?

Tal vez valga la pena mirar las áreas portátiles de mvccontrib. No los he usado desde MVC 2, pero encontré la siguiente pregunta SO de alguien que tiene algunos problemas al usarlos con MVC 3, con algunas soluciones posibles: ASP.NET MVC 3, Razor Views y Portable Areas