「ViewBag」という名前は現在のコンテキストに存在しません-Visual Studio 2015


97

私は再びASP.NETで開発を始めており、Visual Studio内で小さなエラーに遭遇しました。いくつかのかみそり機能を使用すると、.cshtmlファイルにエラーが表示されます。たとえば、「名前 'ViewBag'は現在のコンテキストに存在しません」などです。ここに写真があります:

Visual Studio 2015の問題のスクリーンショット

デモプロジェクトを使用しています。ここでプロジェクトを見つけることができます:https : //github.com/Wintellect/Angular-MVC-Cookbook/tree/master/BasicProject

私は他のいくつかのスレッドを調べましたが、ほとんどはweb.configファイルを更新することをお勧めします。これらの2つの構成ファイルはすでに存在しており、かなり人気のあるデモなので、必要な構成がすべて含まれていると思います。もちろん、これらの構成ファイルを調べましたが、実際には推奨されるソリューションが含まれています。

その他の詳細:

  • 私はすでにソリューションでクリーン&リビルドを使用しましたが、何も変わりませんでした。
  • 完全に新しいMVCプロジェクトを作成すると機能します
  • 私の友人にも同じ問題があり、私たちはどちらもVS 2015とWindows 10を使用しています
  • 私はまだアプリケーションを実行でき、それは機能します。

前もって感謝します。


まだ実行されている場合は、バックグラウンドコンパイラのエラーです。<Projectname> .suoファイルを削除してみてください。
Henk Holterman、2015年

どのプロジェクトを実行していますか?基本?クラッド、ルーティング?
Prashant Ghimire、2015年

1
@ヘンクは残念ながらうまくいきませんでした。
ミクジュ2015年

@Prashant基本的なプロジェクトとルーティングプロジェクトの両方を試しました。問題はそれらの両方で発生します。
ミクジュ2015年

解決しましたか?私は同じ問題@Michjuh
Burk

回答:


122

すべての設定が正しいにもかかわらず、この問題が発生しました。

これは、コンポーネントキャッシュ内のいくつかの不良ファイルであることが判明し、RazorビューがViewBag、Model、およびHtmlHelpersを認識できなくなりました。これらのファイルを削除すると問題が解決しました(次回Visual Studioを開いたときに、これらのファイルの適切なバージョンが作成されていました)。

ファイルはここにあります:

%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache

4つのファイルすべてを削除します。

  • Microsoft.VisualStudio.Default.cache
  • Microsoft.VisualStudio.Default.catalogs
  • Microsoft.VisualStudio.Default.err
  • Microsoft.VisualStudio.Default.external

その後、他のいくつかの開発者マシンでも同じ問題が発生しましたが、この修正ですぐに解決します。


9
これで問題は解決しました。Temporary ASP.NET Filesを削除することも役立つことがわかりました。C:\ Users \ your.name.here \ AppData \ Local \ Temp \ Temporary ASP.NET Files
Kevin

これは私にとっても修正でした。投稿ありがとうございます!
Caverman

これにより、.net 4から4.5.2へのアップグレードおよびmvc 3から5へのアップグレードによって引き起こされた私の問題が修正されました
Joe Phillips

私の問題は、モデルのプロパティが認識されていないことでした。この修正により、私の問題はすぐに解決されました。
jkerak 2016年

5
私のフォルダには、VS 2017のため15.0_7e8de76c \ ComponentModelCacheある
ケビン.NET

40

web.configViewsフォルダー内のファイルの設定でバージョン番号を更新します。

 <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

nugetを使用してMVCバージョンを更新した場合は、次のようになります。

 <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

他の依存バージョンも更新する必要があるかもしれません。MVCヘルパーとオブジェクトのビューのコンパイルと名前空間の問題は、通常web.config、ビューフォルダー内の混乱したファイルに関連しています。


8
5.2.2.0ではなく5.2.0.0のバージョン番号を入力する必要がありましたが、これは私にとってはうまくいきました。[参照]> [System.Web.MVC]に移動して[プロパティ]を選択すると、現在のバージョンを確認できます。ヘルプをありがとう
user2233949 2015

@ user2233949、@ Benjamin MVCバージョンを使用4.0.0.0しています。プロパティから確認できます。私の場合の修正は何ですか?
Zeeshan 2015

すべてのweb.configファイルを確認し、それらすべてが正しいホストバージョンを使用していることを確認してください。場合によっては、オーバービューフォルダーの設定を上書きしたときに、修正せずに問題が回避されることがあります。
ベンジャミンアンダーソン

1
私は他のすべての提案を試しましたが、これは5.2.3.0を使用して私にとってはうまくいきました。ありがとうベンジャミン
ミッチ

1
これが正解でした。また、web.configを変更した後、すべての*.cshtmland *.vbhtmlファイルを閉じて、ソリューションをクリーン&再構築することを忘れないでください。VS 2019 16.1.2
ステパンHavránek

22

appsettingsで「webpages:Version」を見つけて、バージョン3.0.0.0に更新します。私のweb.configには

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

そして私はそれを

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


これは、Web.configの両方のバージョン、プロジェクトルート、および任意の領域のWeb.configsでも更新する必要があります。
Sonu K

ありがとうございました。私の場合、問題のあるタグは<configuration>-<configSections>-<sectionGroup name = "system.web.webPages.razor">の下にあります。<sectionGroup name = "system.web.webPages.razor">を変更する必要があります。 <section name = "host">および<section name = "pages">は、バージョン= 3.0.0.0を使用します
Hong

(を含むTemporary ASP.NET Files)どこでもキャッシュを削除しても効果はありませんでしたが、この回答では効果がありました
wha7ever 2018

この設定はどういう意味ですか?それは何に対応していますか?アプリで依存しているバージョンをどのように判断しますか?
jpmc26 2018

17

不要だと思ってフォルダーweb.configから外しViewsてしまいました。元に戻すと動作し始めました。


13

太陽の下ですべてを試した後、何かが私System.Web.WebPages.Razor <sectionGroup>/Views/Web.Config適切なキャメルケースSystem.Web.WebPages.Razorからすべて小文字に変更system.web.webpages.razorし、最終的には私の終焉であることがわかりました。

これがこの問題で他の貧しい魂を助けることを願っています...

参考までに、これは正しいエントリです(私のシナリオの場合)。

<sectionGroup name="System.Web.WebPages.Razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 

3
鉱山はすべて小文字でしたが、私の問題は解決しませんでした。
Paul Totzke 16年

聖なる鯉。これも私の終焉でした。@jbwedtech、あなたがこれを発見したなんて信じられません。
ルーク・プレット

私も小文字でこれらを使用しており、大文字を変更しても問題は解決しませんでした。
アンディブラウン

5

web.configの設定でバージョン番号を変更するだけでは不十分な場合があります。この問題は、Visual Studio 2015にmvc4ツールがないために発生します。

解決策は、プロジェクトをMVC 5にアップグレードすることです。問題を完全に解決します。このページからヘルプを入手できます。それは明確にそれを説明します。

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

ちなみに、Visual Studioチームは、最初の更新でmvc4サポートをVisual Studio 2015に追加することを宣言しました。


5

私はこの問題に何度も直面し、最後に、ビューのフォルダにそれが含まれているはずの独自のWeb構成であるために発生したことを発見しました


2
しかし、そのweb.configには何があるはずですか?自動生成されるべきではありませんか?(更新)、それは持っている必要があり、それがどのように生成されているものが見つかりstackoverflow.com/questions/29305914/...
drzaus

はい、あなたは正しいです。私のプロジェクトでは、Web.Configは以前には存在しませんでした(はい、自動的に生成されますが、以前の開発者からプロジェクトを取得しましたが、彼が削除した理由はわかりません)。ViewsフォルダーのWeb.Configファイルを追加した後、それは機能しました。
user3559462

2

ゲームに遅れましたが、これらの解決策はどれも私にとってはうまくいきませんでした。

VS 2017にアップグレードしましたが、サイトは機能しましたが、Visual Studioコンパイラがほとんどの.cshtmlファイルを壊しました

TLDR;

mysolution.slnのバージョンが間違っていた

sln diff

したがって、新しいVSで新しいソリューションを作成し、それを自分のVSと比較して、バージョン情報をコピーします。

完全なアップグレード手順:

  1. .slnファイルにVSの正しいバージョンがあることを確認します
  2. VSでMySolutionを右クリック> Nuget Manager>更新>すべての更新を実行
  3. VSでMySolutionを右クリック>アプリケーション>ターゲットフレームワークを更新(私の場合は4.5.2)
  4. .configファイルのバージョンの問題を修正します(つまり、RAZORを3.0.0.0に)
  5. コンパイラのコードの問題を修正しました(私にとってForEachはあいまいでした)

私のプロジェクトはVS2013で開始され、VS2017に到達するとこれらのエラーが表示され始めましたが、すべてが正常にコンパイルされたため、何が起こっているのかを理解しようとしましたが、それほど難しくありませんでした。ビューを開くと多数のエラーが発生するため、問題になりました。私は今VS2019にいて、あなたの修正につまずきました。あなたはロック!私の.slnは14.0.25123.0で、16.3.9でした。フレームワークのバージョンの問題も修正しました。すべての更新を完全にテストする時間がないので、(ありがたいことに)nugetパッケージを更新する必要はありませんでした。
-DaBlue、

1

これで、1日の作業で無駄になりました。私はこの(そして他の)投稿のすべてを試しましたが、役に立ちませんでした。結局、別の方法でプロジェクトを開く必要があることがわかりました。既存のWebサイトをVisual Studio 2015、MVC5、.NET Framework 4.5.2にアップグレードしたばかりで、Windows 10を使用していますが、各ソフトウェアアプリケーションの他のバージョンでも答えは同じだったと思われます。

だからこれは私がウェブサイトを開くことを選んだメニューオプションです:

ここに画像の説明を入力してください

これの代わりに、このメニューオプションを使用してプロジェクトを定義するcsprojファイルを開きました。

ここに画像の説明を入力してください

次に、他の多くの人が参照する「クリーンソリューション」オプションを用意しました。

ここに画像の説明を入力してください

しかし、私はこれさえ必要としませんでした-すべてがうまくいった!とにかく、私は次の問題のセットに乗りました、とにかく...


1

私はコントローラを追加しました

  • ステップ1:追加>クラス
  • ステップ2:UserController

作成された対応するコード:

namespace SampleApp.Controllers
{
    public class UserController {
    }
}

ステップ1を次のように変更すると、エラーが変更されました。

  • ステップ1:追加>コントローラ
  • ステップ2:ユーザーコントローラー

作成された対応するコード:

namespace SampleApp.Controller {
    public class UserController : Controller {
    }
}

問題は次のとおりです: 私はコントローラーからクラスを継承していませんでした

私のエラーの他のメッセージが含まれていました-これらのすべてはこの問題からのものでした:

エラーCS0117: 'ModelState'には 'IsValid'の定義が含まれていません

エラーCS0103:「RedirectToAction」という名前は現在のコンテキストに存在しません

エラーCS0103:「ビュー」という名前は現在のコンテキストに存在しません

エラーCS0103:「ViewBag」という名前は現在のコンテキストに存在しません

エラーCS0103:名前「Json」は現在のコンテキストに存在しません

この変更が、最初のステップで注意を払っていない人たちに役立つことを願っています。


1

このテーマ(およびその他)のすべてのソリューション/トリックの少なくとも90%を試した後、ようやく解決しました!! スポイラーアラート、ロジックの痕跡はありません。次のいわゆる「ソリューション」です。すべてのタブを閉じた状態でソリューションを実行すると、「ViewBag&Coが現在のコンテキストに存在しない」という余裕がない場合、最終的に機能します...あなたは警告されました、おかしな論理はありません!

いつか誰かのお役に立てば幸いです^^


1

私の場合、この問題は1つのプロジェクトのPCでのみ発生していました。私のプロジェクトはVS2012では問題なく動作しましたが、VS2017で開いたときにこの問題が発生していました。

ここでの主な問題はキャッシュでした。私のプロジェクトは、RazorおよびMVCの古いバージョンのdllキャッシュを指していて、ViewBagなどの新しいバージョンで追加された機能を見つけていませんでした。ViewBagはRazorバージョン3で追加されましたが、Razorバージョン2をキャッシュしていたため、ViewBagを見つけることができませんでした(ただし、バージョン2に存在する他のものを見つけることができました)。しかし、受け入れられた回答のようにキャッシュをクリアするだけでは問題は解決しませんでした。Razorの場合は「2ではなくバージョン3を使用」、MVCの場合は「4ではなくバージョン5を使用」と設定ファイルを変更してから、VSを閉じてキャッシュを削除し、プロジェクトを開いて再ビルドする必要がありました。その後、物事は修正されました。以下はより詳細な手順です。

問題を解決するのに役立つ一連の変更を次に示します。

  1. 「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ではすべてゼロを入力してください)

  1. メイン設定ファイル(最上位のファイル)でwebPages:version、2.0.0.0から3.0.0.0に変更します。

  2. この変更はおそらくソリューションに影響を与えませんでしたが、それについてはまだ触れておきます。「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>
  1. 最後に、VSを閉じます。%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCacheFentonが(現在)受け入れている回答で提案されているように(または正しいパスが何であれ)すべてのキャッシュファイルを削除します。.scanその回答で言及されていなくても、ファイルも削除します。完了したら、VSを開き、プロジェクトをクリーンアップして再ビルドします。物事今動作しているはずです。それは私のために働いた。

0

オフにしてから再びオンにするとうまくいきました。Visual Studioを再起動してみてください。


冗談の答えのように聞こえますが、これが私の解決策です。肩をすくめる
ダグラスティムズ

0

.cshtmlページの上部に以下を追加することで問題を解決できました

@{ViewBag.Title = "Title";}

再コンパイルした後、この行を削除することができ、エラーはなくなりました。




0

私は同じ問題に直面しました。Clean、Build、Rebuildソリューションを試しましたが、うまくいきませんでした。

だから最後に私は以下のようにしました:

  1. Windowsキー+ Rを押す
  2. タイプの%temp%
  3. ヒット入力してください
  4. すべてのファイルを削除します(いくつかのファイルが削除されずに残っている場合、問題はありません)

それもあなたたちのために働くことを願っています。


0

クライアントのアプリケーションの1つをASP MVC 4からASP MVC 5にアップグレードした後、cshtmlページでHTMLヘルパーとViewBagに関連するデザイナーエラーが発生しました。

これらの問題を修正するには、次のことを確認してください 。NugetからAsp.NET Webヘルパーライブラリをインストール するプロジェクトのWeb.configを開き、Nugetパッケージのインストール時にバインディングが更新されていない場合は、バインディングを更新します。

<dependentAssembly>
  <assemblyIdentity name=”System.Web.Mvc publicKeyToken=”31bf3856ad364e35 />
  <bindingRedirect oldVersion=”0.0.0.0-5.2.2.0 newVersion=”5.2.2.0 />
</dependentAssembly>

appsettingsで webpages :Version」を見つけて、バージョン3.0.0.0に更新します。私のweb.configには

そして私はそれを

Visual Studioを再起動して再構築します。プロジェクトのbinフォルダーを削除する必要がある場合があります

これにアクセスしてくださいhttps : //lajak.wordpress.com/2014/11/16/asp-mvc-5-viewbag-does-not-exist-in-the-current-context/


-1

他のすべてを試して少しイライラした後、MVC5アプリの.NETフレームワークを4.5から4.5.2にアップグレードしました。どういうわけかそれは私の問題を修正しました。それが役に立てば幸い。


-4

web.configで置換を解決しました

 <add key="webpages:Enabled" value="false" />

 <add key="webpages:Enabled" value="true" />

これが反対票を投じられた理由を追加すると、実際のビューがブラウザから見えるようになります
mtbennett
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.