web-dev-qa-db-ja.com

ビューはWebViewPageまたはWebViewPage <TModel>から派生する必要があります

私は Justin Slatteryのプラグインアーキテクチャチュートリアル に従っており、WebFormビューの代わりにRazorに適合させようとしています。

他のすべて(コントローラー、プラグインアセンブリの読み込みなど)は問題ないようです。ただし、埋め込まれたRazorビューを正しく動作させることはできません。 「HelloWorld/Index」を参照しようとすると、次のエラーが表示されます。

_The view at '~/Plugins/MyProjectPlugin.dll/MyProjectPlugin.Views.HelloWorld.Index.cshtml' must derive from WebViewPage or WebViewPage<TModel>.
_

例外はSystem.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +262によってスローされます

必要に応じて、完全なスタックトレースを含めることができます。

誰かが私が間違っているかもしれないことについて助言できますか?

73
Nasir

ブログ投稿に続く をチェックアウトしてください。これは、Razorにより適合しています。

しかし、あなたの質問に答えるために、あなたは現在、非標準の場所からビューを提供しているので、もはや~/Views/web.configファイルを適用して、カミソリビューのベースタイプを指定できます。そのため、各カミソリビューの上部に次を追加する必要がある場合があります。

@inherits System.Web.Mvc.WebViewPage
@model ...
156
Darin Dimitrov

注:私は非常に似た問題を抱えていたため、自分のソリューションにリンクされたMVC 4.0.0.0を持つ唯一の開発者であることを最終的に突き止めなければなりませんでした。

他の全員は3.0.0.0を適切に参照し、エラーなしでビルド/実行していました。

TL; DR参照が開発グループの他の部分と同じであることを確認してください。

6
nolsen311

かみそりライブラリを含むパッケージフォルダをコミットしなかったため、同じ問題が発生しました。その後、パッケージを追加しましたが、動作しましたが、再構築すると壊れました。その後、ビルド時にナゲットの自動実行をオフにしましたが、現在は正常に動作しています。私の場合、nugetは物事を台無しにしていた。

1
max

MVCの足場(具体的にはViewsフォルダー)をWeb APIプロジェクトに追加しようとすると、このエラーが発生しました。 ダリン・ディミトロフの答え 言う:

適用される~/Views/web.configファイルはなくなり、カミソリビューのベースタイプを指定できるようになりました

そして、その答えに対するコメントで、 joelnetが言った

この問題を解決するために、web.configを〜/ Viewsから別の場所にコピーすることができました。

そして ポール・ダウストが言った

@joelnetのコメントにある解決策がうまく機能しない場合は、プロジェクトのクリーニングと再構築を試してください。

これらのヒントは、解決策を見つけるのに役立ちました。

最初に、同じソリューションの別のプロジェクトのViewsフォルダーからWeb.configを新しいViewsフォルダーにコピーしました。メインのnamespaceタグの名前を新しいプロジェクトに合わせて変更し、エラーが発生した後、不要な<add namespace="..." />を削除しました。次に、ビルドをトリガーし(通常のビルドのみで、クリーンアップして再ビルドする必要はありませんでした)、エラーなしで新しいビューを読み込むことができました。

0
Scott Weldon

私は痛みを分かち合いたいと思います。サイトはローカルで正常に機能していましたが、顧客のIISに公開すると、このエラーがスローされました。すべてのweb.configファイル(ルートおよび/ Views)は、サイトの作業コピーと完全に一致しました。

ビューの1つ(logon.cshtml)に一貫性のない行末があり、Windowsマシンで[はい]をクリックして修正しませんでした。

一貫性のない行末ダイアログで[はい]をクリックし、logon.cshtmlビューを公開すると、修正されました。

0
Noobie3001

古いMVC3-projectをバージョン4に更新すると、今日このエラーが発生しました。私にとっての解決策は、属性appliesTo="v2.0.50727" の中に <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1"> セクション。

0
Fr3gU