MVC 4 アプリケーションで大幅なリファクタリングを行った後、ビューのデバッグ中に Razor に次のエラーが表示されます。
「モデル」という名前は、現在のコンテキストには存在しません。
これは問題のあるコード行です。
@model ICollection<DataSourceByActive>
の使い方@model
が正しいことはわかっています。
なぜこうなった?どうすれば修正できますか?
MVC 4 アプリケーションで大幅なリファクタリングを行った後、ビューのデバッグ中に Razor に次のエラーが表示されます。
「モデル」という名前は、現在のコンテキストには存在しません。
これは問題のあるコード行です。
@model ICollection<DataSourceByActive>
の使い方@model
が正しいことはわかっています。
なぜこうなった?どうすれば修正できますか?
Viewsフォルダーにあるweb.configファイルを台無しにしたと思います。
同じ .NET フレームワークを対象とする新しいプロジェクトを作成し、その Views/web.config ファイルを現在のプロジェクトのファイルの上にコピーします。これで問題が解決します。
また、Dudeman3000 がコメントしたように、MVC プロジェクトにエリアがある場合、それらにもすべてViews\web.config
ファイルがあります。
セクションのサイトWeb.config
ディレクトリとビューディレクトリの両方に次のものがあることを確認しWeb.config
てくださいappSettings
<add key="webpages:Version" value="2.0.0.0" />
MVC5 の場合:
<add key="webpages:Version" value="3.0.0.0" />
(そしてそれはメインWeb.config
ファイルにのみ存在します。)
これが私がしたことです:
.suo ファイルは、.svn ソリューション ファイルと同じフォルダーにある隠しファイルで、Visual Studio ユーザー オプションが含まれています。
私は同じ問題を抱えていました。新しいプロジェクトを作成し、Gupta の回答で推奨されているように web.config ファイルをコピーしましたが、問題は解決しませんでした。Alex と Liam の回答を確認しました。この行は新しい web.config からコピーされたに違いないと思いましたが、新しいプロジェクト自体にはこの行 (MVC5) がないようです。
<add key="webpages:Version" value="3.0.0.0" />
views/web.config ファイルに行を追加すると、問題が解決しました。
ビューフォルダーの web.config の次の行を変更すると、同じエラーが解決しました。
から
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
に
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
私の場合、最近 MVC 4 から MVC 5 に更新しましたが、これにより web.config がかなり台無しになりました。この記事は非常に役に立ちました。
肝心なのは、web.config および Views/web.config 内のすべてのバージョン番号参照をチェックして、MVC 5 に関連付けられた正しいアップグレード バージョンを参照していることを確認する必要があるということです。
既存の回答はどれもうまくいきませんでしたが、さまざまなプロジェクトのファイルを比較することで、何がうまくいったかを見つけました。.csproj
次の XML ファイルへの手動編集は.csproj
、Razor-intellisense の問題を解決しました。<Private>False</Private>
重要なのは、のインスタンスをすべて削除することです<Reference>
:
<ItemGroup>
<Reference Include="Foo">
<HintPath>path\to\Foo</HintPath>
<!-- <Private>False</Private> -->
</Reference>
<Reference Include="Bar">
<HintPath>path\to\Bar</HintPath>
<!-- <Private>True</Private> -->
</Reference>
</ItemGroup>
それらがどのようにしてそこにたどり着いたのか、正確には何をしているのかはわかりませんが、私よりも賢い誰かがその情報を追加できるかもしれません. 最終的にこの問題を解決できてうれしかったです。
私にとっての問題は、最近インポートしたライブラリの 1 つにある .NET バージョンの競合でした。インポートしたライブラリは 4.5.2 用にコンパイルされており、ASP.NET MVC サイトはターゲットの 4.5 にインポートしました。4.5のlibを再コンパイルすると、Webサイトがコンパイルされます。
また、コンパイル エラーはありませんでしたが、問題は「警告」として報告されていました。そのため、警告がある場合は必ずすべて読んでください。
プラグインのビュー部分を nopcommerce\Plugins の下の出力フォルダーにコピーしていた nopCommerce でこの問題が発生しましたが、ビューは埋め込みリソースである必要がありました。そのため、.csthml ファイルの間違ったビルド アクションは「コンテンツ」であり、「埋め込みリソース」であるべき場所でした。コピーは必要ありません。
7年が経ちました。ただし、私の状況は少し異なります。
すべてのビューは正常に機能しています。したがって、web.config と nuget を変更して新しいライブラリを取得しても機能せず、問題が発生した可能性があります。
私のシナリオは、私がプロジェクト B に取り組んでいるというものでした。プロジェクト B はプロジェクト A のクローンです。長い話ですが、時間を節約するために、プロジェクト B からプロジェクト A にコードをコピーする必要があります。
今回は abc.cshtml ファイルをプロジェクト B からプロジェクト A にコピーしただけです。プロジェクト B は 2015 を使用して開発されたものです。何らかの理由で、これが問題を引き起こしました。知らない。とにかく、abc.cshtml を削除し、空白の abc.cshtml を最初から作成しました。次に、プロジェクト B の abc.cshtml のすべてを選択し、すべてのテキストをプロジェクト A に新しく作成した abc.cshtml にコピーします。
問題を解決しました