17

これが私が達成したいことです。ASP.NET MVC の AREA を純粋な単一の DLL として分離したいと考えています。

  1. ブログ.DLL
  2. フォーラム.DLL
  3. FAQ.DLL

それぞれが個別の ASP.NET MVC エリアであり、独自の既定の CSHTML または ASPX ページがあります。リソース、javascript などを含む多くのページをインストール、移行、および維持することは、長期的には非常に苦痛です。これらのほとんどはほとんど変わらないためです。

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

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

何も追加せず、Blog.dll をドロップするだけで、アプリケーションは /blog とそのすべてのページをサポートするはずです。何かをカスタマイズしたい場合は、領域を追加して 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 にはいくつかの変更が必要になる場合がありますが、ほとんどの場合、configure 値をデータベースに保存し、必要なのは web.config の「Entity Framework 接続文字列」だけです。

私の課題(質問)

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

3 に答える 3

9

別のアセンブリにリソースとして埋め込まれている Razor ビューを取得するために、カスタム VirtualPathProvider を使用する方法を示す次の記事をご覧ください。

于 2012-07-14T10:26:51.940 に答える
1

たぶん、mvccontribからポータブルエリアを見る価値があります。私はMVC2以来それらを使用していませんが、MVC 3でそれらを使用する際にいくつかの問題を抱えている誰かから、ASP.NET MVC 3、Razor Views、およびPortableAreasで次のSO質問を見つけました。

于 2012-07-14T10:35:55.843 に答える
1

MvcCodeRoutingは、必要なものに加えて、他の多くのクールなものをサポートします。ASP.NET MVC プラグインに関するこの投稿を確認してください。

于 2012-07-14T13:31:39.950 に答える