ASP.NETで再び開発を始めたところ、Visual Studioで小さなエラーに遭遇しました。いくつかのカミソリ機能を使用すると、.cshtmlファイルにエラーが表示されます。たとえば、「名前 'ViewBag'は現在のコンテキストに存在しません」。これが写真です:
デモプロジェクトを使用しています。プロジェクトはこちらで見つけることができます: https://github.com/Wintellect/Angular-MVC-Cookbook/tree/master/BasicProject
私は他のいくつかのスレッドを調べましたが、ほとんどはweb.configファイルを更新することを提案しています。これらの2つの構成ファイルは既に存在し、非常に人気のあるデモなので、必要なすべての構成が含まれていると思います。もちろん、これらの構成ファイルを調べましたが、提案された解決策が実際に含まれています。
その他の情報:
前もって感謝します。
すべて正しく設定されているにもかかわらず、この問題が発生しました。
コンポーネントキャッシュ内の不良ファイルで、RazorビューがViewBag、Model、およびHtmlHelpersを認識できない であることが判明しました。これらのファイルを削除することで問題が解決しました(次回Visual Studioを開いたときにこれらのファイルの良いバージョンが作成されました)。
ファイルは次の場所にあります。
%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache
4つのファイルをすべて削除します。
その後、同じ問題が他のいくつかの開発者マシンで見られましたが、この修正によりすぐに解決されます。
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
ファイルに関連しています。
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
をViewフォルダーから削除しましたが、それは不要だと思いました。戻すと動作し始めました。
太陽の下ですべてを試した後、somethingはSystem.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">
私はこの問題に何度も直面し、最終的に私はビューのフォルダにそれが含まれるべきであるためにそれが起こったことを発見しました
Web.configの設定でバージョン番号を変更するだけでは不十分な場合があります。この問題は、Visual Studio 2015にmvc4ツールがないために発生します。
解決策は、プロジェクトをMVC 5にアップグレードすることです。問題を完全に解決します。このページからヘルプを得ることができます。それは明確に説明しています。
ところで、Visual Studioチームは、最初の更新でVisual Studio 2015にmvc4サポートを追加すると宣言しました。
ゲームに遅れたが、これらのソリューションはどれも役に立たなかった。
VS 2017にアップグレードし、サイトは機能しましたが、Visual Studioコンパイラが.cshtmlファイルのほとんどを破損しました
TLDR;
mysolution.slnのバージョンが間違っていた
そのため、新しいVSで新しいソリューションを作成し、それを自分のソリューションと比較して、バージョン情報をコピーします。
完全なアップグレード手順:
私はこの作業に1日以上費やしました。私はこの(および他の)投稿のすべてを試しましたが、役に立ちませんでした。最終的に、プロジェクトを別の方法で開く必要があることがわかりました。既存のWebサイトをVisual Studio 2015、MVC5、.NETフレームワーク4.5.2にアップグレードし、Windows 10を使用していますが、各ソフトウェアアプリケーションの他のバージョンでも同じ答えが得られると思われます。
だから、これは私がウェブサイトを開くために選んだメニューオプションです:
これの代わりに、このメニューオプションを使用してプロジェクトを定義するcsprojファイルを開きました。
その後、他の多くの人が参照する「クリーンなソリューション」オプションがありました。
しかし、私もこれは必要ありませんでした-すべてがうまくいきました!さて、とにかく次の一連の問題に取りかかりました...
.cshtmlページの先頭に次を追加することで問題を解決できました
@{ViewBag.Title = "Title";}
再コンパイル後、この行を削除することができ、エラーはなくなりました。
私の見解の1つで同様の問題に直面しました。私の場合、私はソリューションをクリーンアップし、リビルドとその動作を試みました。
それをオフにして再びオンにすることは私のために働いた。 Visual Studioを再起動してみてください。
このテーマ(およびその他)のすべてのソリューション/トリックの少なくとも90%を試してみたところ、ついに解決しました!!ネタバレ注意:ロジックの痕跡はありません。いわゆる「ソリューション」です。すべてのタブを閉じた状態でソリューションを実行すると最終的に機能します。あなたは警告されました、おかしなロジックはありません!
いつか誰かを助けることを願っています^^
コントローラーを追加しました
対応するコードが作成されました:
namespace SampleApp.Controllers
{
public class UserController {
}
}
ステップ1を次のように変更すると、私のエラーが変わりました。
対応するコードが作成されました:
namespace SampleApp.Controller {
public class UserController : Controller {
}
}
問題は:クラスを継承していなかったController
私のエラーの他のメッセージが含まれていました-これらはすべてこの問題からのものでした:
エラーCS0117:「ModelState」には「IsValid」の定義が含まれていません
エラーCS0103:名前 'RedirectToAction'は現在のコンテキストに存在しません
エラーCS0103:名前 'View'は現在のコンテキストに存在しません
エラーCS0103:名前 'ViewBag'は現在のコンテキストに存在しません
エラーCS0103:名前 'Json'は現在のコンテキストに存在しません
この変更が、最初のステップで注意を払っていない人に役立つことを願っています。