5

私はいくつかの Web サイトを持っており、これらの Web サイトはいくつかのコンポーネントを共有しています。従来の ASP.NET WebControls ascx を使用すると、非常に簡単でした。このようなコントロールをいくつか作成し、1 つの dll ライブラリに入れ、namespace.elements runat=server を介してこれらの Web サイトからこれらのライブラリを参照しています...

しかし、ASP.NET MVC にアップグレードした後、その方法がわかりません。モデルとコントローラ クラスを dll に入れることができます。

しかし、ビューを dll に入れて再利用するにはどうすればよいですか?

dllを再コンパイルせずにビューを変更できる場合、ビューはdllにコンパイルされていないと思います。

EDITS:サードパーティよりも標準的なソリューションを好むでしょう。私にとっての最後の解決策は、ViewEngine の代わりに StringBuilder を使用することです。

4

1 に答える 1

6

私はRazor Generatorを数年間使用して、再利用可能な MVC ビューとヘルパーを個別の .dll に格納しています。

Razor Generatorは、「Razor ファイルを実行時ではなく設計時に処理できるようにする Visual Studio 用のカスタム ツールであり、再利用と配布を簡単にするためにアセンブリに組み込むことができます。」

インストール手順

VS拡張ギャラリーにあるので、そちらからインストールしてください。これは「Razor Generator」</a> と呼ばれます (「Razor Single File Generator for MVC」と混同しないでください)。

使い方はとても簡単です:

MVC アプリでの使用

  1. 特別なビュー エンジンを登録する「RazorGenerator.Mvc」パッケージをインストールします。
  2. MVC Razor ビューのプロパティに移動し、カスタム ツールを RazorGenerator に設定します。
  3. 必要に応じて、カスタム ツールの名前空間の値を指定して、生成されたファイルの名前空間を指定します。デフォルトでは、プロジェクトの名前空間が使用されます。
  4. 必要に応じて、Razor ファイルの最初の行でジェネレーターの 1 つを指定します。ジェネレーター宣言行は次のようになります: @* Generator: MvcHelper *@ . これを指定しない場合、ジェネレーターは規則に基づいて選択されます (たとえば、Views の下のファイルは MvcViews として扱われます)。
  5. .cshtml ファイルの下に生成された .cs ファイルが表示されます。これは、実行時に .cshtml ファイルの代わりに使用されます。
  6. また、nuget パッケージ マネージャー コンソールに移動し、'Enable-RazorGenerator' を実行して、すべてのビューでカスタム ツールを有効にすることもできます。
  7. すべてのビューを再生成するには、nuget パッケージ マネージャー コンソールに移動し、「Redo-RazorGenerator」を実行します。これは、ジェネレーター パッケージを更新し、別のコードを生成する必要がある場合に便利です。

インテリセンスやその他の便利な機能をサポートするには、クラス ライブラリに MVC プロジェクトを選択する必要があります。

ビュー ライブラリでの使用

プリコンパイル済み MVC ビュー用に別のライブラリを作成する必要がある場合、最適な方法は、ライブラリ プロジェクトではなく、そのライブラリ用の MVC プロジェクトを実際に作成することです。実際に Mvc アプリとして実行することはありませんが、適切な構成ファイルのセットが付属しているという事実により、IntelliSense やその他の機能がライブラリ プロジェクトよりもはるかにうまく機能します。

次に、実際の MVC アプリからその「MVC ビュー プロジェクト」への参照を追加できます。

また、メインの MVC アプリではなく、 「 RazorGenerator.Mvc 」パッケージをライブラリにインストールする必要があることに注意してください。

Jess Chadwick によって書かれたASP.NET MVC 4 をプログラミングすると、

ASP.NET Web フォームの世界では、スタンドアロン アセンブリにコンパイルできるユーザー コントロールまたはカスタム コントロールを作成することで、これを実現できます。これらのアセンブリはプロジェクト間で配布できるため、プロジェクト間で再利用できます。

Web フォーム ビュー エンジンは、ViewUserControlクラスを提供します。これを利用して、MVC フレームワーク用のこのようなコンポーネントを作成できます。ただし、ASP.NET MVC の Razor ビュー エンジンは、そのままではそのようなメソッドを提供しません。

Razor Single File Generatorビジュアル スタジオ拡張機能を使用することをお勧めします。これは別のものですが、 Razor Generatorアプローチに似ています。

于 2013-11-03T09:55:22.603 に答える