アプリケーションでViewBagを使用しようとしていますが、最新のdll、MVC 3の最新バージョンがすべてありますが、それでもエラーが発生します。
「「ViewBag」という名前は現在のコンテキストには存在しません」
MVC 3をアンインストールしてから再インストールしましたが、変更はありません。
また、dllがGACに表示されているとは思いません。
私の問題は何でしょうか?または、dllをGACに追加する方法は?
アプリケーションでViewBagを使用しようとしていますが、最新のdll、MVC 3の最新バージョンがすべてありますが、それでもエラーが発生します。
「「ViewBag」という名前は現在のコンテキストには存在しません」
MVC 3をアンインストールしてから再インストールしましたが、変更はありません。
また、dllがGACに表示されているとは思いません。
私の問題は何でしょうか?または、dllをGACに追加する方法は?
私も同じ問題を抱えていました。./Views/Web.config
ASP.NET MVCテンプレートを使用する代わりに、空のASP.NETアプリケーションからプロジェクトを作成したため、ファイルが欠落していることが判明しました。
ASP.NET MVC 5の場合、バニラ./Views/Web.config
ファイルには次のものが含まれます。
<?xml version="1.0"?>
<!-- https://stackoverflow.com/a/19899269/178082 -->
<configuration>
<configSections>
<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">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<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>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
<!--
Enabling request validation in view pages would cause validation to occur
after the input has already been processed by the controller. By default
MVC performs request validation before a controller processes the input.
To change this behavior apply the ValidateInputAttribute to a
controller or action.
-->
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
</configuration>
このコンテンツを含むファイルを追加すると、./Views/Web.config
この問題が修正されました。
MVC固有のRazor構成をweb.configに追加する必要があります。ここを参照してください:Razor HtmlHelper拡張機能(またはビューの他の名前空間)が見つかりません
MVC 3アップグレードツールを使用して、正しい構成値があることを自動的に確認します。
クリーンアップして再構築してみてください。私の場合はうまくいきました。
VisualStudio2015でMVC5にアップグレードされたソリューションでも同じ問題が発生しました。
ビューフォルダー内のweb.configファイル(ルートweb.configではない)で、から参照されているバージョン番号を<configSections>
からに更新し2.0.0.0
ました3.0.0.0
。
<configuration>
<configSections>
<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">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
さまざまなことを試した後、それはVSキャッシュであることがわかりました。次の場所にあるキャッシュファイルを削除することで解決できます。
C:\ Users \ your.name.here \ AppData \ Local \ Microsoft \ VisualStudio \ 14.0 \ ComponentModelCache
プロジェクトを閉じ、そのパス上のファイルを削除してプロジェクトを再度開き、ソリューションをクリーンアップして再度ビルドすると、問題が解決しました。
次回VisualStudioを起動すると、ファイルが再作成されます
私は同じ問題を抱えていて、crimboは私に正しい手がかりを与えました、それは存在したが私が推測する正しい名前空間を含んでいない./Views/Web.configファイルによって引き起こされました...
空のMVC5プロジェクトを作成し、その./Views/Web.configを既存のプロジェクトにインポートすると、ViewBagを使用するたびに赤い波が消えました。
Visual Studio2013を使用してMVC3を使用したい場合は、Visual Studio2013がMVC3をネイティブにサポートしていないため(./Views/web.configを変更しても)、MVC 4のみをサポートしているため、このエラーが発生します:https:// msdn .microsoft.com / en-us / library / hh266747.aspx
ファイルを持っていました./Views/Web.Config
が、サイトを公開した後にこのエラーが発生しました。ファイルのビルドアクションプロパティがのNone
代わりに設定されていることがわかりますContent
。これを変更してContent
、公開が正しく機能するようにします。
[プロパティ]ダイアログでアプリケーションのデフォルトの名前空間を変更した後、この問題が発生しました。
./Views/Web.Configには、古い名前空間への参照が含まれていました
私の場合、webpage:Versionを適切な値に変更すると問題が解決しました。私にとって、正しい値は(3.0.0.0ではなく2.0.0.0)でした。
<appSettings>
<add key="webpages:Version" value="2.0.0.0"/>
<add key="webpages:Enabled" value="false"/>
すべてのアプローチを試した後、私が持っているのは正しい構成だけだったので、どれもうまくいきませんでした。ついに
システムから「temp」と「%temp%」からすべてのファイルを削除すると、この問題を解決するのに役立ちました。
[ファイル名を指定して実行]コマンド(Windows + R)を開き、上記の文字列を入力して、すべての一時ファイルを削除します。
私はすでにbinとobjファイルを削除してVSを再起動しようとしましたが、うまくいきませんでした。
私も何度もこの問題を抱えており、毎回解決するのは苦痛です。多くの場合、web.configファイルに参照の1つの正しいバージョンがないことが原因です。これは、Visual Studioで参照をクリックして、[プロパティ]タブのバージョンを確認し、それをweb.configファイルのバージョンと一致させることを意味します。
もう1つの方法は、(可能であれば).net Frameworkの新しいバージョンにアップグレードしてから、bin/objファイルを削除してVisualStudioを再起動することです。私はそれが何かを変えていると仮定することができるだけです
csprojファイル間の差分を簡単にチェックしても、実際には大きな違いは示されていません...しかし、表示された違いは次のとおりです(古い行を表示するために追加(削除)しました)
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> (remove)
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>(remove)
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
Web.Configファイル(ビューにあるファイルではない)
<add key="webpages:Version" value="2.0.0.0" /> (remove)
<add key="webpages:Version" value="3.0.0.0"/>
また、(同じweb.configファイルに)追加しましたが、手動で削除しました
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
最後に、パッケージマネージャーコンソールで、次のように追加します。update-package
Webサイトをローカルで実行し、2番目の段落で修正されたコンパイルエラーを確認します(参照のバージョンと一致します)
./Views/Web.Configフォルダーの下のwebpages:Versionを更新しましたが、この設定はルートのweb.configにも存在していました。両方を更新するか、ルートweb.configから削除します
@WilsonVallecillaがすでに述べたように。キャッシュを削除するには、次の手順を実行してください。
以下のパスに従ってファイルを見つけてください。
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 \TemporaryASP.NETファイル。
これは私のために働きます。
ありがとう!
MVC5の場合、アプリケーションを最初から作成する場合。Web.configファイルをViewsフォルダーに追加し、次のコードを貼り付ける必要があります。
<?xml version="1.0"?>
<configuration>
<configSections>
<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">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<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>
</configuration>
MVC 3の場合、バージョンを3.0.0.0に変更する必要があることに注意してください。
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
変更を確認するには、*。cshtmlページを再度閉じて開く必要がある場合があります。