私の場合、この問題は1つのプロジェクトのPCでのみ発生していました。私のプロジェクトはVS2012では問題なく動作しましたが、VS2017で開いたときにこの問題が発生していました。
ここでの主な問題はキャッシュでした。私のプロジェクトは、RazorおよびMVCの古いバージョンのdllキャッシュを指していて、ViewBagなどの新しいバージョンで追加された機能を見つけていませんでした。ViewBagはRazorバージョン3で追加されましたが、Razorバージョン2をキャッシュしていたため、ViewBagを見つけることができませんでした(ただし、バージョン2に存在する他のものを見つけることができました)。しかし、受け入れられた回答のようにキャッシュをクリアするだけでは問題は解決しませんでした。Razorの場合は「2ではなくバージョン3を使用」、MVCの場合は「4ではなくバージョン5を使用」と設定ファイルを変更してから、VSを閉じてキャッシュを削除し、プロジェクトを開いて再ビルドする必要がありました。その後、物事は修正されました。以下はより詳細な手順です。
問題を解決するのに役立つ一連の変更を次に示します。
- 「Views」フォルダのWeb.configで、すべての場所を変更します
- MVCバージョンは4.0.0.0から5.0.0.0に設定されています
- Razorバージョンは2.0.0.0から3.0.0.0に設定されています
これが私の場合の行です:
<sectionGroup name="system.web.webPages.razor" type="... Version=3.0.0.0 ...">
<section name="host" type="... Version=3.0.0.0 ..." .../>
<section name="pages" type="... Version=3.0.0.0 ..." .../>
</sectionGroup>
...
<host factoryType="... System.Web.Mvc, Version=5.0.0.0 ..." />
...
<pages
...
pageParserFilterType="... Version=5.0.0.0 ..."
pageBaseType="... Version=5.0.0.0 ..."
userControlBaseType="... Version=5.0.0.0 ...">
<controls>
<add assembly="... Version=5.0.0.0 ..." ... />
</controls>
</pages>
(注:1)バージョンが異なる場合があります。私の場合は何をする必要があるかを示しているだけです。2)簡潔にするために「...」を省略しました。3)5.3.2.0のようなMVCバージョンであってもRazorのバージョンと同じ5.0.0.0を入力する必要があります-3.0.0.0ではすべてゼロを入力してください)
メイン設定ファイル(最上位のファイル)でwebPages:version
、2.0.0.0から3.0.0.0に変更します。
この変更はおそらくソリューションに影響を与えませんでしたが、それについてはまだ触れておきます。「Views」フォルダの<namespaces>
セクションの内容が、プロジェクトのルートにあるメインの.conifgファイルとまったく同じであることを確認してください。
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
</namespaces>
- 最後に、VSを閉じます。
%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache
Fentonが(現在)受け入れている回答で提案されているように(または正しいパスが何であれ)すべてのキャッシュファイルを削除します。.scan
その回答で言及されていなくても、ファイルも削除します。完了したら、VSを開き、プロジェクトをクリーンアップして再ビルドします。物事は今動作しているはずです。それは私のために働いた。