web-dev-qa-db-ja.com

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

Windows 2003 R2サーバーがあります。 .NET MVC3 Webサイトを実行する必要があります。既にすべてのランタイム(1、2、4)をインストールし、すべてのMVCフレームワーク(3、4)をインストールしましたが、このエラーは消えません。

所定のビューにあるはずのweb.configがあります。私は、この問題に対するすべての、そしてそれぞれの解決策に従って、スタックオーバーフローを出しています。また、展開可能な依存関係の追加(mvcプロジェクトを右クリック)を使用して、すべてのdllをbinフォルダーに展開しました。

この時点で、私は他に何をすべきかわかりません。オンラインでアイデアやソリューションを使い果たしました。

既にすべてのランタイム、フレームワークなどをアンインストールして再インストールしました。ローカルコンピューターでは正常に動作しますが(Windows 7)、デプロイすると次のエラーが発生します。

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

ソースエラー:

ライン1: @{

2行目:ViewBag.Title = "Home Page";

3行目:}

4行目:<h2> @ ViewBag.Message </ h2>

ソースファイル:d:\ FamilyDermMVC\Views\Home\Index.cshtml行:2

37

OK。それを私が直した。何が修正されたのか正確にはわかりませんが、この「9マイル」全体で修正されると思います。

すべてのMVC拡張機能、ツール、およびそこにあるものはすべて削除(プログラムの削除)しました。

その後、.netランタイムを削除せずに再インストールしました。 2および4。

その後、mvc3とmvc4をインストールし直しました。 asp.netで最新バージョンを入手しました。

それからラップトップで同じことをしました。

注:MVC4をWindows2003サーバーにインストールするには、Power Shell 2.0が必要です。そのサーバーの特定のダウンロードを見つける必要があります。

それを行ったら、アプリプールをリサイクルし、サーバーを再起動しました。

BANG ...ページがロードされました。

これが将来、他の人々に役立つことを願っています。

答えてくれてありがとう。

PS:私の考えでは、ラップトップとサーバーにそれぞれ同じバージョン(またはリリース)のmvc3(またはmvc4)がありませんでした。

1

Web.Configviewsフォルダー内に次の行が欠けているように聞こえます:

/Views/Web.Config

<?xml version="1.0"?>

<configuration>

  <system.web.webPages.razor>
    <Host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

      <pages pageBaseType="System.Web.Mvc.WebViewPage"> // <-- this line and contents are important
        <namespaces>
          <add namespace="System.Web.Mvc" />
          <add namespace="System.Web.Mvc.Ajax" />
          <add namespace="System.Web.Mvc.Html" />
          <add namespace="System.Web.Routing" />
        </namespaces>
      </pages>

  </system.web.webPages.razor>

ビューは通常、web.configで構成されているSystem.Web.Mvc.WebViewPageから派生します。アプリケーションでDLLを展開していない場合、基本クラスは以下にインストールされていますDLL

アセンブリSystem.Web.Mvc.dll、v4.0.30319

c:\ Program Files(x86)\ Microsoft ASP.NET\ASP.NET MVC 3\Assemblies\System.Web.Mvc.dll

更新1

手動でMVC XからMVC Yにアップグレードする場合、ターゲット.Net Framework(4.5から4.6など)を変更する必要があり、古い参照(6ではなくMVC 5を指す)がある場合は明らかに古いファイルを使用できない新しいファイルと組み合わせて(たとえば、MVC 5 DLLは4.6のSystem.Webに対して使用できません)。

73
Erik Philips

これはしばらく前に投稿されたようですが、とにかくこの問題に関する私の経験を追加すると思いました。

新しいMVC asp.netプロジェクトを作成すると、すぐにこの同じエラーが発生していました。 [ビルド]-> [ソリューションのクリーン]、[ソリューションのビルド]の順にクリックするだけで、問題が修正されました。エラーが最初に生成された直後にエラーが発生したため、最初にエラーが発生した理由はまだよくわかりません。

5
Fütemire

同じタイプの問題がありました(htmlヘルパーコードが認識されません)。

私はそれがどのように始まったのか分かりませんが、私は次を置き換えることでそれを解決しました:

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

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

ビューのweb.configファイル内。

私の解決策を見つけました こちら

5
Derfenestrator

Resharperが原因である可能性が高い

Visual Studio/Tools/Options/Resharperに移動し、-今すぐサスペンド/Resume Resharperをクリックしますそれ!

1
jwize

多くの解決策があり、それぞれの成功率が混在しているようです。

私にとっては、Views/web.configファイルのこの行のバージョン番号を変更すると機能しました:

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

4.0.0.5.0.0.に変更し、保存し、ソリューションを閉じて、再度開き、そして出来上がりました!迷惑な赤い波線がゴネでインテリセンスが戻った

1
Matt

私の場合、MVC 3プロジェクトをMVC 2対応プラットフォームで実行しようとしたため、この問題が発生しました。

その後、システムにMVC 3をインストールしましたが、問題はなくなりました

0
ajaykalyanynr

ビューを閉じる、再構築、ビューを開くことが役立つ場合があります。

0
BrilBroeder

Web.configファイルで正しい構成がすべて行われているにもかかわらず、この問題が発生しました。

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

ファイルを検出するには、以下のパスに従ってください:

C:\Users\your.name.here\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache

4つのファイルすべてを削除:

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

プロジェクトを閉じ、そのパス上のファイルを削除してプロジェクトを再度開き、ソリューションをクリーンアップして再度ビルドし、問題を解決しました

一時ASP.NETファイルを削除することも役立ちます。 C:\ Users\your.name.here\AppData\Local\Temp\Temporary ASP.NET Files。

この方法で、ビュー内のインテリジェントに関連するすべてのエラーを修正できます(Razor MVC)これを試してみて、これが機能することを教えてください。

ありがとう!

0
Trilok Pathak

http://www.asp.net/mvc/mvc5 からVisual Studio 2012のASP.NET MVC 5サポートをインストールすると、問題が解決します。

0
Joset