4

この質問と同様に、カスタム VirtualPathProvider を使用して、dll に埋め込まれたビューを取得しています。ビューを配置しない@inherits System.Web.Mvc.WebViewPageと、次のエラーが発生します。

The view at '~/Views/Home/Index.cshtml' must derive from ViewPage, ViewPage<TModel>, ViewUserControl, or ViewUserControl<TModel>.

WebViewPage から継承するカスタム BaseViewPage を使用しています。このカスタム VirtualPathProvider を使い始める前は、web.config で新しい基本ページを設定していました。ここで、ページでカスタム クラスを継承しようとすると、@inherits My.BaseViewPage上記と同じエラーが発生します。

完全を期すために、WebViewPage から継承するとページのコンパイルが開始されることを追加しますが、ビューが BaseViewPage からのプロパティを持つことを期待するコードがあるため、エラーがスローされます。

4

2 に答える 2

2

問題は、使用していたビュー エンジンに関係していたことが判明しました。VirtualPathProvider を機能させるために、ビュー エンジンを、必要なビューの場所を追加するカスタム エンジンに置き換えました。誤って から を継承したため、取得し続けたエラーはではWebFormsViewEngineなくでした。すべてが整理されたので、カスタム ベース ビュー ページは問題なく動作します。RazorViewEngineViewPageWebViewPage

于 2012-06-15T19:50:29.550 に答える
1

うーん...基本クラスがDLLから適切に解決されていない可能性はありますか?

その場合、カスタム アセンブリ/型リゾルバー ハンドラーを追加する必要があります...(メモリから) AppDomain.AssemblyResolve - そのハンドラーでは、dll から適切な型を取得し、それを返します。

残念ながら、私の電話では、純粋に推測なので、調査機能は限られています。

于 2012-06-15T18:29:19.403 に答える