2012-07-14 18 views
17

私が達成したいのは、純粋な単一のDLLとしてASP.NET MVCのAREAを分離したいのです。プラグインDLLとしてASP.NET MVC領域を作成する方法は?

  1. Blog.DLL
  2. Forums.DLL
  3. FAQ.DLL

それらのそれぞれが独自のデフォルトCSHTMLまたはASPXページで、個々のASP.NET MVCエリアです。リソース、JavaScriptなどを含む多くのページのインストール、移行、および保守は、長期的には本当に苦痛です。これらのほとんどがほとんど変化しないためです。

私の最終的なウェブサイトはこのようになります。

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

Blog.dllを削除するだけで、私のアプリケーションは/ブログとすべてのページをサポートする必要があります。私は..私はエリアを追加することができるよりも、何かをカスタマイズし、そして唯一の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 

これは、単にbinフォルダ内のDLLをドロップすることで、ASP.NETエリアプラグインを再利用するのに役立つだろう。しかし、web.configにはいくつかの変更が必要な場合がありますが、設定値をデータベースに保存し、必要なのはweb.configの「Entity Framework接続文字列」になります。

私の課題(質問)

  1. ことは可能ですか?確かに私には見えますが、反映/許可の問題はありますか?
  2. 1つのDLL内にcshtml/aspxビューを含めるにはどうすればよいですか?おそらくコンパイルされたバージョンですか?私は、コードプレックスにテキストエンジンベースのビューエンジンのカップルを見たことがありますが、実際にそれらを使用する方法については少し混乱しています。
  3. 物理ディレクトリファイルが存在するかどうかを最初に確認し、dll自体のリソースファイルとしてcshtml/aspxを調べるにはどうすればよいですか?

答えて

9

個別のアセンブリにリソースとして埋め込まれたRazorビューを取得するために、カスタムVirtualPathProviderをどのように使用できるかを示すfollowing articleをご覧ください。

+0

aspxファイルはどうですか?たいていはcshtmlのみを使用していますが、PDFを印刷するにはcshtmlは未知のhtmlタグでは動作しません。したがって、時にはaspxを使用します。 –

+1

私はASPXについて知りません。私はそれを使用し終えて以来、長い時間がかかりました。おそらく、仮想パスプロバイダーを採用することができます。 –

+0

Nugetから直接インストールできるEmbeddedResourceVirtualPathProviderを使用することができます。アセットファイルで動作します。 https://github.com/mcintyre321/EmbeddedResourceVirtualPathProvider#readme – mcintyre321

1

mvccontribのポータブルエリアを調べる価値があるかもしれません。私はMVC 2は、それらを使用しますが、いくつかの可能な解決策で、MVC 3でそれらを使用していくつかの問題を持つ誰かによってSO、次の質問を発見していない:ASP.NET MVC 3, Razor Views, and Portable Areas

1

MvcCodeRoutingはあなたが望むものをサポートし、加えて他の多くのクールなもの。 ASP.NET MVCプラグインについてthis postをチェックしてください。

関連する問題