2011-01-06 4 views
3

私はVirtualPathProviderを使用してテーマビューを提供しています。私は、Visual Studio Item.cshtmlでパスリソースとしてクラスライブラリにレイザービューを埋め込む

return View("~/Themes/SomeTheme.dll/Views/Content/Item.cshtml"); 

でビューを返したいアクションメソッドで

は、ビルドアクション「埋め込まれたリソース」を持っています。
VirtualPathProviderはその.cshtmlファイルを見つけたが、私は、私はそのビューをコンパイルする必要があると私はthese instructionsを追ってきたと思いますエラー

The view at '~/Themes/SomeTheme.dll/Views/Content/Item.cshtml' must derive from WebViewPage, or WebViewPage<TModel>. 

を取得します。

これでVirtualPathProviderは埋め込みリソースではないため、Item.cshtmlを見つけることができません。

この問題を解決するにはどうすればよいですか?起動したテーマがアプリケーションの起動時に動的に読み込まれるため、そのSomeTheme.dllへの参照を追加できません。

私はaspxファイルでこれをやったことがあります。それらはコンパイルする必要はありませんでした。彼らは埋め込まれたリソースとして箱の中で働いていました。

+0

ご迷惑をおかけしましたが、この質問は受け付けていません。コンパイルされたビューを今実行することができましたか?コンパイルされたバージョンを使用している場合は、パスにdll-nameを使用しないでください。 –

+0

私はそれを別のアプローチで動作させることができました。それについてのブログ記事を作ったhttp://mikakolari.fi/blogi/aspnetmvc-3-plugin-architecture-with-embedded-razor-views/ –

+0

Mika、あなたのブログへのリンクはもはや有効ではないようです。ここにソリューションを投稿できますか?コンパイル済みのRazorビューで同じ問題が発生しています。 – Nasir

答えて

2

埋め込まれたaspxビューで同様の問題が発生しました。ページの表示時に発生するコンパイルは、viewsフォルダのweb.configの一部の設定に依存します。埋め込みリソースは、ビューフォルダにないため、これらの設定を使用せず、コンパイルに失敗します。

0

this solutionあなたのビュークラスライブラリでインテリセンスを処理してみてください。そのweb.configに次の行を追加する必要があります。

<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />   

また、実行時にこれを処理するために、あなたの埋め込みビューのそれぞれに@Inherits System.Web.Mvc.WebViewPage文を追加してみてください(または、使用ベースCLASEに置き換えてください)。

1

お試しくださいinstall-package EmbeddedResourceVirtualPathProvider

関連する問題