Oto, co chcę osiągnąć, chcę oddzielić OBSZARY ASP.NET MVC jako czysty pojedynczy DLL.Jak utworzyć obszar ASP.NET MVC jako DLL wtyczki?
- Blog.DLL
- Forums.DLL
- FAQ.DLL
Każdy z nich jest indywidualnie ASP.NET MVC Area, z własnym domyślnej CSHTML lub strony aspx. Instalowanie, migrowanie i utrzymywanie wielu stron, w tym zasobów, javascripts itd., To prawdziwy ból na dłuższą metę. Ponieważ większość z nich prawie się nie zmieni.
Moja ostatnia strona będzie taka.
Bez dodawania czegokolwiek, po prostu porzucając Blog.dll, moja aplikacja powinna obsługiwać/blogować i wszystkie jego strony. Jeśli chcę, aby dostosować coś, niż mogę dodać obszar i dodać tylko strony 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
Pomoże to w ponownym ASP.NET palących wtyczki, po prostu spada dll w folderze bin. Jednak web.config może wymagać pewnych zmian, ale najprawdopodobniej będziemy zapisywać wartości konfiguracyjne w bazie danych i potrzebujemy tylko "ciągu połączenia Entity Framework" w web.config.
Moi wyzwania (pytań)
- jest to możliwe? Na pewno mi się wydaje, ale czy będą jakieś problemy z odbiciem/pozwoleniem?
- Jak dołączyć widoki cshtml/aspx do jednej biblioteki DLL? Prawdopodobnie skompilowane wersje? Widziałem kilka opartych na tekście szablonów View Engines na codepleksie, ale jestem trochę zdezorientowany, jak je właściwie wykorzystać.
- Jak uzyskać ViewEngine, aby najpierw sprawdzić, czy istnieje fizyczny plik katalogowy, a następnie zajrzeć do cshtml/aspx w samej dll jako pliku zasobów?
Co z plikiem aspx? Przeważnie używamy tylko cshtml, ale do drukowania PDF, cshtml nie działa z nieznanymi znacznikami html, więc używamy czasem aspxa. –
Nie wiem o ASPX. Minęło dużo czasu, odkąd przestałem go używać. Być może wirtualny dostawca ścieżek mógłby zostać zaadaptowany. –
Możesz użyć EmbeddedResourceVirtualPathProvider, który można zainstalować bezpośrednio z Nuget. Działa z plikami zasobów. https://github.com/mcintyre321/EbeddedResourceVirtualPathProvider#readme – mcintyre321