web-dev-qa-db-de.com

Der Name 'ViewBag' ist im aktuellen Kontext nicht vorhanden - Visual Studio 2015

Ich fange an, wieder in ASP.NET zu entwickeln, und ich bin auf einen kleinen Fehler in Visual Studio gestoßen. Meine .cshtml-Dateien zeigen Fehler bei der Verwendung einiger Rasiererfunktionen. Zum Beispiel "Der Name 'ViewBag' ist im aktuellen Kontext nicht vorhanden". Hier ist ein Bild: 

 screenshot of problem in visual studio 2015

Ich verwende ein Demo-Projekt. Sie finden das Projekt hier: https://github.com/Wintellect/Angular-MVC-Cookbook/tree/master/BasicProject

Ich habe mehrere andere Threads durchgesehen und die meisten schlagen vor, die Datei (en) web.config zu aktualisieren. Diese 2 Konfigurationsdateien sind bereits vorhanden und da es sich um eine ziemlich beliebte Demo handelt, gehe ich davon aus, dass sie alle erforderlichen Konfigurationen enthält. Ich habe diese Konfigurationsdateien natürlich durchgesehen und sie enthalten tatsächlich die vorgeschlagenen Lösungen. 

Andere Details: 

  • Ich habe bereits clean & rebuild für die Lösung verwendet, aber das hat nichts geändert. 
  • Wenn ich ein komplett neues MVC-Projekt erstelle, funktioniert es
  • Mein Freund hat das gleiche Problem und wir verwenden beide VS 2015 und Windows 10
  • Ich kann die Anwendung immer noch ausführen und funktioniert. 

Danke im Voraus.

76
Michjuh

Ich hatte dieses Problem trotz der richtigen Konfiguration.

Es stellte sich heraus, dass es sich um einige bad-Dateien im Komponentencache handelt, die verhindern, dass die Razor-Ansichten ViewBag, Model und HtmlHelpers erkennen. Durch das Löschen dieser Dateien wurde das Problem behoben (beim nächsten Öffnen von Visual Studio wurden gute Versionen dieser Dateien erstellt).

Die Dateien befinden sich hier:

%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache

Löschen Sie alle vier Dateien:

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

Ich habe später dasselbe Problem auf mehreren anderen Entwicklercomputern gesehen, und dieses Update löst es schnell.

98
Fenton

Aktualisieren Sie die Versionsnummern in den Einstellungen der Datei web.config im Ordner Views.

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

Wenn Sie die MVC-Version über Nuget aktualisiert haben, sollte Folgendes gelten:

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

Andere Abhängigkeitsversionen müssen möglicherweise ebenfalls aktualisiert werden. Kompilierungs- und Namespace-Probleme in Views für MVC-Helfer und -Objekte beziehen sich normalerweise auf web.config-Dateien in den View-Ordnern.

33

Suchen Sie in den Apps-Einstellungen nach "Webseiten: Version" und aktualisieren Sie sie auf Version 3.0.0.0. Meine web.config hatte

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

und ich habe es aktualisiert

<add key=”webpages:Version” value=”3.0.0.0″ />
17
Damian Green

Nachdem ich alles unter der Sonne ausprobiert hatte, stellte sich heraus, dass etwas meinen System.Web.WebPages.Razor<sectionGroup> in /Views/Web.Config vom richtigen CamelCase System.Web.WebPages.Razor zu einem Kleinbuchstaben system.web.webpages.razor geändert hatte, der letztendlich mein Tod war. 

Ich hoffe, dies kann einer anderen armen Seele bei diesem Problem helfen ... 

Als Referenz ist dies der richtige Eintrag (für mein Szenario) 

<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"> 
10
jbwebtech

Ich habe versehentlich web.config aus dem Ordner "Ansicht" entfernt, weil ich dachte, es sei unnötig. Als ich es zurücklegte, fing es an zu arbeiten.

9
InGeek

Manchmal reicht es nicht aus, die Versionsnummern in den Einstellungen der web.config zu ändern. Dieses Problem tritt auf, weil Visual Studio 2015 keine Mvc4-Tools enthält. 

Die Lösung besteht darin, Ihr Projekt auf MVC 5 zu aktualisieren. Dadurch wird das Problem vollständig gelöst. Sie können auf dieser Seite Hilfe erhalten. Das erklärt es eindeutig.

http://www.asp.net/mvc/overview/releases/wie-nach-upgrade-an-aspnet-mvc-4-und-web-api-project-to-aspnet-mvc-5-und- Web-API-2

Nach der Erklärung des Visual Studio-Teams wird Visual Studio 2015 mit dem ersten Update mvc4-Unterstützung hinzugefügt.

4
Burk

ich habe dieses Problem mehrmals konfrontiert und schließlich entdeckte ich, dass es passiert ist, weil der Ordner mit Ansichten eine eigene Webkonfiguration enthalten sollte 

3
hosam hemaily

spät zum Spiel, aber keine dieser Lösungen hat für mich funktioniert.

Ich habe ein Upgrade auf VS 2017 durchgeführt und die Site funktionierte, aber der Visual Studio-Compiler hat die meisten .cshtml-Dateien beschädigt

TLDR;

mysolution.sln hatte die falsche Version

sln diff

sie möchten also eine neue Lösung mit neuerem VS erstellen und diese mit Ihrer vergleichen und die Versionsinformationen kopieren.

vollständige Upgrade-Schritte:

  1. stellen Sie sicher, dass die SLN-Datei die richtige Version für VS hat
  2. klicken Sie mit der rechten Maustaste auf MySolution in VS> Nuget Manager> Updates> Alle Updates ausführen
  3. rechtsklick auf MySolution in VS> Application> Update Target Framework (4.5.2 in meinem Fall)
  4. behebung von Versionsproblemen in .config-Dateien (d. h. RAZOR auf 3.0.0.0)
  5. behebung von Code-Problemen im Compiler (ForEach war für mich mehrdeutig)
1
Sonic Soul

Ich habe einen ganzen Arbeitstag damit verschwendet. Ich habe alles in diesen (und anderen) Beiträgen versucht, ohne Erfolg. Schließlich stellte ich fest, dass ich das Projekt auf andere Weise öffnen musste. Ich habe gerade eine vorhandene Website auf Visual Studio 2015, MVC5, .NET Framework 4.5.2 aktualisiert und benutze Windows 10, vermute aber, dass die Antwort für andere Versionen jeder Softwareanwendung dieselbe gewesen wäre.

Dies ist also die Menüoption, die ich zum Öffnen einer Website gewählt habe:

 enter image description here

Stattdessen habe ich die csproj-Datei geöffnet, die das Projekt definiert, und zwar mit dieser Menüoption:

 enter image description here

Ich hatte dann die Option "saubere Lösung", auf die sich viele andere Leute beziehen:

 enter image description here

Ich brauchte das nicht einmal - alles hat funktioniert! Nun, ich bin trotzdem auf die nächsten Probleme eingegangen ...

1
Andy Brown

Ich konnte das Problem beheben, indem ich oben auf meiner .cshtml-Seite Folgendes hinzufügte

@{ViewBag.Title = "Title";}

Nach dem Neukompilieren konnte ich diese Zeile löschen und der Fehler war weg. 

0
Versatile

Ich hatte ein ähnliches Problem mit einer meiner Ansichten. In meinem Fall habe ich einfach die Lösung aufgeräumt und versucht, umzubauen und seine Werke.

0

Das Ein- und Ausschalten hat bei mir funktioniert. Sie können versuchen, Visual Studio neu zu starten.

0
kravits88

Nachdem ich mindestens 90% aller Lösungen/Tricks dieses Themas (und anderer) ausprobiert habe, habe ich es endlich gelöst !! Spoiler-Warnung, es gibt keine Spur von Logik, die folgende sogenannte "Lösung" ist: Das Ausführen der Lösung mit allen geschlossenen Tabs hat endlich funktioniert, wenn mir sonst nichts erspart hätte: "ViewBag & Co gibt es im aktuellen Kontext nicht" ... Du wurdest gewarnt, keine verdammte Logik!

Hoffe, es wird jemandem eines Tages helfen ^^

0
Jueverhard

Ich hatte den Controller von hinzugefügt

  • Schritt 1: Hinzufügen> Klasse
  • Schritt 2: UserController
  • .
  • .
  • .

entsprechender Code erstellt:

namespace SampleApp.Controllers
{
    public class UserController {
    }
}

Meine Fehler wurden durch Ändern von Schritt 1 wie folgt geändert:

  • Schritt 1: Hinzufügen> Controller
  • Schritt 2: Benutzersteuerung
  • .
  • .
  • .

entsprechender Code erstellt:

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

Das Problem war: Ich hatte meine Klasse nicht von Controller geerbt

Andere Nachrichten in meinem Fehler enthalten - alle von diesem Problem waren:

fehler CS0117: 'ModelState' enthält keine Definition für 'IsValid'

fehler CS0103: Der Name 'RedirectToAction' ist im aktuellen Kontext nicht vorhanden

fehler CS0103: Der Name 'View' ist im aktuellen Kontext nicht vorhanden

fehler CS0103: Der Name 'ViewBag' ist im aktuellen Kontext nicht vorhanden

fehler CS0103: Der Name 'Json' ist im aktuellen Kontext nicht vorhanden

Hoffe, diese Änderung hilft denen, die in ihren ersten Schritten nicht aufgepasst haben.