web-dev-qa-db-ja.com

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

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

screenshot of problem in visual studio 2015

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

私は他のいくつかのスレッドを調べましたが、ほとんどはweb.configファイルを更新することを提案しています。これらの2つの構成ファイルは既に存在し、非常に人気のあるデモなので、必要なすべての構成が含まれていると思います。もちろん、これらの構成ファイルを調べましたが、提案された解決策が実際に含まれています。

その他の情報:

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

前もって感謝します。

81
Michjuh

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

コンポーネントキャッシュ内の不良ファイルで、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

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

103
Fenton

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

 <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ヘルパーとオブジェクトのビューでのコンパイルと名前空間の問題は、通常、Viewフォルダー内の混乱したweb.configファイルに関連しています。

36

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″ />
17
Damian Green

誤ってweb.configをViewフォルダーから削除しましたが、それは不要だと思いました。戻すと動作し始めました。

11
InGeek

太陽の下ですべてを試した後、somethingSystem.Web.WebPages.Razor<sectionGroup>/Views/Web.Configで適切なCamelCase 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"> 
11
jbwebtech

私はこの問題に何度も直面し、最終的に私はビューのフォルダにそれが含まれるべきであるためにそれが起こったことを発見しました

4
hosam hemaily

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チームは、最初の更新でVisual Studio 2015にmvc4サポートを追加すると宣言しました。

4
Burk

ゲームに遅れたが、これらのソリューションはどれも役に立たなかった。

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

TLDR;

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

sln diff

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

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

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

私はこの作業に1日以上費やしました。私はこの(および他の)投稿のすべてを試しましたが、役に立ちませんでした。最終的に、プロジェクトを別の方法で開く必要があることがわかりました。既存のWebサイトをVisual Studio 2015、MVC5、.NETフレームワーク4.5.2にアップグレードし、Windows 10を使用していますが、各ソフトウェアアプリケーションの他のバージョンでも同じ答えが得られると思われます。

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

enter image description here

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

enter image description here

その後、他の多くの人が参照する「クリーンなソリューション」オプションがありました。

enter image description here

しかし、私もこれは必要ありませんでした-すべてがうまくいきました!さて、とにかく次の一連の問題に取りかかりました...

1
Andy Brown

.cshtmlページの先頭に次を追加することで問題を解決できました

@{ViewBag.Title = "Title";}

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

0
Versatile

私の見解の1つで同様の問題に直面しました。私の場合、私はソリューションをクリーンアップし、リビルドとその動作を試みました。

0

それをオフにして再びオンにすることは私のために働いた。 Visual Studioを再起動してみてください。

0
kravits88

このテーマ(およびその他)のすべてのソリューション/トリックの少なくとも90%を試してみたところ、ついに解決しました!!ネタバレ注意:ロジックの痕跡はありません。いわゆる「ソリューション」です。すべてのタブを閉じた状態でソリューションを実行すると最終的に機能します。あなたは警告されました、おかしなロジックはありません!

いつか誰かを助けることを願っています^^

0
Jueverhard

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

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

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

namespace SampleApp.Controllers
{
    public class UserController {
    }
}

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

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

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

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

問題は:クラスを継承していなかったController

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

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

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

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

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

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

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