226

MVC 4 アプリケーションで大幅なリファクタリングを行った後、ビューのデバッグ中に Razor に次のエラーが表示されます。

「モデル」という名前は、現在のコンテキストには存在しません。

これは問題のあるコード行です。

@model ICollection<DataSourceByActive>

の使い方@modelが正しいことはわかっています。

なぜこうなった?どうすれば修正できますか?

4

25 に答える 25

279

Viewsフォルダーにあるweb.configファイルを台無しにしたと思います。

同じ .NET フレームワークを対象とする新しいプロジェクトを作成し、その Views/web.config ファイルを現在のプロジェクトのファイルの上にコピーします。これで問題が解決します。

また、Dudeman3000 がコメントしたように、MVC プロジェクトにエリアがある場合、それらにもすべてViews\web.configファイルがあります。

于 2013-10-31T01:44:28.977 に答える
110

セクションのサイト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ファイルにのみ存在します。)

于 2014-05-13T14:30:01.040 に答える
53

これが私がしたことです:

  1. Visual Studio を閉じる
  2. SUOファイルを削除します
  3. Visual Studio を再起動します

.suo ファイルは、.svn ソリューション ファイルと同じフォルダーにある隠しファイルで、Visual Studio ユーザー オプションが含まれています。

于 2015-10-12T19:53:52.687 に答える
26

私は同じ問題を抱えていました。新しいプロジェクトを作成し、Gupta の回答で推奨されているように web.config ファイルをコピーしましたが、問題は解決しませんでした。Alex と Liam の回答を確認しました。この行は新しい web.config からコピーされたに違いないと思いましたが、新しいプロジェクト自体にはこの行 (MVC5) がないようです。

<add key="webpages:Version" value="3.0.0.0" />

views/web.config ファイルに行を追加すると、問題が解決しました。

于 2014-11-13T07:26:19.010 に答える
19

ビューフォルダーの 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" />
于 2016-02-04T03:10:51.337 に答える
10

私の場合、最近 MVC 4 から MVC 5 に更新しましたが、これにより web.config がかなり台無しになりました。この記事は非常に役に立ちました。

http://www.asp.net/mvc/overview/releases/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web- API-2

肝心なのは、web.config および Views/web.config 内のすべてのバージョン番号参照をチェックして、MVC 5 に関連付けられた正しいアップグレード バージョンを参照していることを確認する必要があるということです。

于 2015-02-27T19:59:28.330 に答える
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>

それらがどのようにしてそこにたどり着いたのか、正確には何をしているのかはわかりませんが、私よりも賢い誰かがその情報を追加できるかもしれません. 最終的にこの問題を解決できてうれしかったです。

于 2018-08-20T16:13:26.610 に答える
1

私にとっての問題は、最近インポートしたライブラリの 1 つにある .NET バージョンの競合でした。インポートしたライブラリは 4.5.2 用にコンパイルされており、ASP.NET MVC サイトはターゲットの 4.5 にインポートしました。4.5のlibを再コンパイルすると、Webサイトがコンパイルされます。

また、コンパイル エラーはありませんでしたが、問題は「警告」として報告されていました。そのため、警告がある場合は必ずすべて読んでください。

于 2015-08-13T16:19:21.143 に答える
0

プラグインのビュー部分を nopcommerce\Plugins の下の出力フォルダーにコピーしていた nopCommerce でこの問題が発生しましたが、ビューは埋め込みリソースである必要がありました。そのため、.csthml ファイルの間違ったビルド アクションは「コンテンツ」であり、「埋め込みリソース」であるべき場所でした。コピーは必要ありません。

于 2021-07-10T09:23:53.403 に答える
0

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 にコピーします。

問題を解決しました

于 2021-09-03T16:20:01.470 に答える