2012-07-14 14 views
17

Oto, co chcę osiągnąć, chcę oddzielić OBSZARY ASP.NET MVC jako czysty pojedynczy DLL.Jak utworzyć obszar ASP.NET MVC jako DLL wtyczki?

  1. Blog.DLL
  2. Forums.DLL
  3. 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ń)

  1. jest to możliwe? Na pewno mi się wydaje, ale czy będą jakieś problemy z odbiciem/pozwoleniem?
  2. 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ć.
  3. 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?

Odpowiedz

9

Możesz rzucić okiem na following article, który ilustruje, w jaki sposób można użyć niestandardowego VirtualPathProvider w celu pobrania widoków Razor, które są osadzone w oddzielnych złożeniach jako zasoby.

+0

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. –

+1

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. –

+0

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

1

Może warto zajrzeć na przenośne obszary od mvccontrib. Nie korzystałem z nich od czasu MVC 2, ale znalazłem następujące pytanie SO przez kogoś, kto miał problemy z ich używaniem z MVC 3, z kilkoma możliwymi rozwiązaniami: ASP.NET MVC 3, Razor Views, and Portable Areas

Powiązane problemy