0

外部かみそりビューに問題があります。私のプロジェクトでは、メインの mvc Web アセンブリと、独自のコントローラー、ビュー、およびモデルを使用して (DB から) 外部クラス ライブラリ アセンブリを動的に読み込みました。これらのアセンブリは、実行時に直接参照および読み込まれることはありません。

ビュー用のカスタム仮想パス プロバイダーであるコントローラー用のカスタム コントローラー ファクトリを作成することで、システム全体を機能させることができました。ビューは、外部アセンブリに埋め込まれたリソースです。

私が抱えている問題は、外部アセンブリからモデル クラスを使用して厳密に型指定された外部ビューを作成すると、アセンブリがかみそりコンパイラに渡されないため、実行時にビューをコンパイルできないことです。したがって、次のエラーが表示されます。

コンパイラ エラー メッセージ: CS0234: 型または名前空間名 'MyPlugin' が名前空間 'MyNamespace' に存在しません (アセンブリ参照がありませんか?)

ソース エラー:

public class
_Page_ExternalViews_MyController_MyAction_cshtml : System.Web.Mvc.WebViewPage<MyNamespace.MyPlugin.Models.MyModel>
{

動的モデル、メイン Web アセンブリのモデル クラス、または Web プロジェクトで直接参照されているアセンブリのモデル クラスを使用すると、問題なく動作します。私のコントローラーは問題なく動作するため、外部のカミソリビューがコンパイルされる前に外部アセンブリが読み込まれることは確かです。

外部ビューをプリコンパイルするために RazorGenerator プロジェクトを調べ始めましたが、何の進展もありませんでした (何も生成されていません)。また、アセンブリが次の場所に読み込まれているため、正しい方向を見ているかどうかさえわかりません。独自の ViewEngine と ControllerFactory を使用する必要があります。

4

2 に答える 2

1

動的アセンブリのビューで using ディレクティブを使用してみてください。

@using MyNamespace.MyPlugin.Models;
@using MyNamespace.MyPlugin;

于 2013-07-24T04:34:10.740 に答える
0

アセンブリで RazorGenerator Visual Studio 拡張機能 (1 つではありませんRazorGenerator.Mvc) を使用してビューをプリコンパイルできました。

基本的に、アセンブリがコンパイルされる前に、.cshtmlかみそりビュー.csをクラスを含むファイルに変換します。WebViewPageそして、私のWebプロジェクトでは、これに似た独自のものを実装する必要がありVirtualPathProviderViewEngineました

于 2013-07-25T22:23:13.123 に答える