De naam ‘ViewBag’ bestaat niet in de huidige context – Visual Studio 2015

Ik begin weer te ontwikkelen in ASP.NET en ik kwam een kleine fout tegen in Visual Studio. Mijn .cshtml-bestanden vertonen fouten bij het gebruik van enkele scheerfuncties. Bijvoorbeeld “De naam ‘ViewBag’ bestaat niet in de huidige context”. Hier is een foto:

Ik gebruik een demoproject. Je kunt het project hier vinden: https://github.com/Wintellect/ Angular-MVC-Cookbook/tree/master/BasicProject

Ik heb verschillende andere threads bekeken en de meeste stellen voor om de web.config-bestand(en) bij te werken. Deze 2 configuratiebestanden zijn al aanwezig en aangezien het een behoorlijk populaire demo is, neem ik aan dat het alle vereiste configuraties bevat. Ik heb natuurlijk door deze configuratiebestanden gekeken en ze bevatten inderdaad de voorgestelde oplossingen.

Andere details:

  • Ik heb al clean & herbouw op de oplossing maar dat veranderde niets.
  • Als ik een volledig nieuw MVC-project maak, werkt het wel
  • Mijn vriend heeft hetzelfde probleem en we gebruiken allebei VS 2015 en Windows 10
  • Ik kan de applicatie nog steeds uitvoeren en het werkt.

Bij voorbaat dank.


Antwoord 1, autoriteit 100%

Ik had dit probleem ondanks de juiste configuratie.

Het bleken wat slechte bestanden in de Component Cache, waardoor de Razor-weergaven ViewBag, Model en HtmlHelpers niet herkennen. Het verwijderen van deze bestanden loste het probleem op (goede versies van deze bestanden werden gemaakt de volgende keer dat ik Visual Studio opende).

De bestanden bevinden zich hier:

%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache

Verwijder alle vier de bestanden:

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

Ik heb hetzelfde probleem vervolgens op verschillende andere ontwikkelaarsmachines gezien en deze oplossing lost het snel op.


Antwoord 2, autoriteit 33%

Werk de versienummers bij in de instellingen van het bestand web.configin de map Views.

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

Als je de MVC-versie via nuget hebt bijgewerkt, moet dit zijn:

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

Andere afhankelijkheidsversies moeten mogelijk ook worden bijgewerkt. Compilatie- en naamruimteproblemen in Views voor MVC-helpers en objecten zijn meestal gerelateerd aan verknoeide web.config-bestanden in de View-mappen.


Antwoord 3, autoriteit 17%

Zoek “webpagina’s: versie” in de appsettings en update deze naar versie 3.0.0.0. Mijn web.config had

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

en ik heb het bijgewerkt naar

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

4, Autoriteit 17%

Ik heb per ongeluk gehaald web.configvan de ViewsMap, denkend dat het niet nodig was. Toen ik het terugzet, begon het te werken.


5, Autoriteit 5%

Ik heb deze kwestie vaker voorgesteld en uiteindelijk ontdekte ik dat het gebeurde omdat de map met uitzicht het zou moeten bevatten is eigen webconfiguratie


6, Autoriteit 4%

Soms is het niet genoeg om versienummers in de instellingen van het web.config te wijzigen. Dit probleem treedt op omdat Visual Studio 2015 geen MVC4-tooling heeft.

Oplossing is om uw project te upgraden naar MVC 5. Het lost het probleem volledig op.
U kunt van deze pagina hulp krijgen. Het verklaart het duidelijk.

http://www.asp.net/mvc/overview/releases/how-to-upgrade-an-aspnet-mvc-4-and- Web-Api-Project-to-Aspnet-MVC-5-en-Web-API-2

Door de manier waarop Visual Studio-team verklaarde, zullen ze MVC4-ondersteuning toevoegen aan Visual Studio 2015 met de eerste update.


7, Autoriteit 2%

In mijn geval had ik dit probleem alleen op mijn pc alleen voor één project. Mijn project werkte prima in vs2012, maar toen werd geopend in VS2017, had het dit probleem.

Het belangrijkste probleem voor mij was hier cache. Mijn project wijst naar de oudere cache-versies van DLL voor Razor en MVC en het vond geen functies die in nieuwere versies werden toegevoegd, zoals Viewbag. Viewbag is toegevoegd in Razor-versie 3, maar omdat ik Razor-versie 2 in de cache had, kon het geen viewbag (maar het kon andere dingen vinden die aanwezig waren in versie 2). Echter, eenvoudigweg cache opruimen zoals in het geaccepteerde antwoord heeft mijn probleem niet opgelost. We moesten configuratiebestanden veranderen om te zeggen “Gebruik versie 3 in plaats van 2” voor scheermes en “Gebruik versie 5 gebruiken in plaats van 4” voor MVC, en vervolgens versluiten vs, het verwijderen van cache en het openen van project en het opnieuw opbouwen. Toen werden de dingen gefixeerd. Hieronder staan ​​gedetailleerde instructies.

Hier is de reeks wijzigingen die me heeft geholpen mijn probleem op te lossen:

  1. in “Bekeken” map’s web.config verander alle locaties waar
    • MVC-versie is ingesteld op 4.0.0.0 tot 5.0.0.0
    • Razor-versie is ingesteld op 2.0.0.0 tot 3.0.0.0

Hier zijn die lijnen in mijn geval:

<sectionGroup name="system.web.webPages.razor" type="... Version=3.0.0.0 ...">
    <section name="host" type="... Version=3.0.0.0 ..." .../>
    <section name="pages" type="... Version=3.0.0.0 ..." .../>
</sectionGroup>
...
<host factoryType="... System.Web.Mvc, Version=5.0.0.0 ..." />
...
<pages
    ...
    pageParserFilterType="... Version=5.0.0.0 ..."
    pageBaseType="... Version=5.0.0.0 ..."
    userControlBaseType="... Version=5.0.0.0 ...">
    <controls>
        <add assembly="... Version=5.0.0.0 ..." ... />
    </controls>
</pages>

(OPMERKINGEN: 1) Uw versies kunnen anders zijn, ik vertel gewoon wat nodig is in mijn zaak 2) Ik heb wat spullen weggelaten met “…” voor Brevity 3), zelfs als je MVC hebt Versie Iets zoals 5.3.2.0 U moet nog 5.0.0.0 invoeren, hetzelfde met de versie van Razor – invoer alle nullen in 3.0.0.0)

  1. in hoofdconfiguratie (die op het hoogste niveau) Wijzigen webPages:versionvan 2.0.0.0 tot 3.0.0.0.

  2. Deze wijziging heeft waarschijnlijk geen invloed op de oplossing, maar ik zal het nog steeds vermelden. Zorg ervoor dat “Bekeken” map is <namespaces>Sectie heeft exact dezelfde inhoud als hoofd. Configuratie-bestand aan de root van het project, zoiets als:

<namespaces>
    <add namespace="System.Web.Helpers" />
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Ajax" />
    <add namespace="System.Web.Mvc.Html" />
    <add namespace="System.Web.Optimization" />
    <add namespace="System.Web.Routing" />
    <add namespace="System.Web.WebPages" />
</namespaces>
  1. Sluit ten slotte VS. Verwijder alle cachebestanden in %LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache(of wat je juiste pad ook is) zoals voorgesteld in (momenteel) geaccepteerd antwoord van Fenton. Verwijder ook het bestand .scan, zelfs als het niet in dat antwoord wordt genoemd. Als je klaar bent, open je VS, maak je je project schoon en bouw je het opnieuw op. Dingen zou moetennu werken. Het werkte voor mij.

Antwoord 8, autoriteit 2%

laat in het spel, maar geen van deze oplossingen werkte voor mij.

Ik heb een upgrade naar VS 2017 uitgevoerd en de site werkte, maar de Visual Studio-compiler brak de meeste .cshtml-bestanden

TLDR;

mysolution.sln had de verkeerde versie

dus u wilt een nieuwe oplossing maken met een nieuwere VS en deze met de uwe vergelijken en versie-informatie overnemen.

volledige upgradestappen:

  1. zorg ervoor dat het .sln-bestand de juiste versie heeft voor VS
  2. klik met de rechtermuisknop op MySolution in VS > Nugetmanager > Updates > voer alle updates uit
  3. klik met de rechtermuisknop op MySolution in VS > Toepassing > update Target Framework (4.5.2 in mijn geval)
  4. verhelp eventuele versieproblemen in .config-bestanden (d.w.z. RAZOR naar 3.0.0.0)
  5. eventuele codeproblemen in de compiler oplossen (voor mij was ForEach dubbelzinnig)

Antwoord 9

Ik heb hier ruim een werkdag aan verspild. Ik heb alles geprobeerd in deze (en andere) berichten, zonder resultaat. Uiteindelijk kwam ik erachter dat ik het project op een andere manier moest openen. Ik heb zojuist een bestaande website geüpgraded naar Visual Studio 2015, MVC5, .NET framework 4.5.2 en gebruik Windows 10, maar vermoed dat het antwoord hetzelfde zou zijn geweest voor andere versies van elke softwaretoepassing.

Dus dit is de menuoptie die ik koos om een website te openen:

In plaats daarvan opende ik het csproj-bestand dat het project definieerde met behulp van deze menuoptie:

Ik had toen de optie “schone oplossing” waar veel andere mensen naar verwijzen:

Ik had dit echter niet eens nodig – alles werkte gewoon! Nou, ik kwam in ieder geval bij de volgende reeks problemen …


Antwoord 10

Ik had de controller toegevoegd door

  • Stap 1: Voeg > Klasse
  • Stap 2: Gebruikerscontroller
  • .
  • .
  • .

overeenkomstige code gemaakt:

namespace SampleApp.Controllers
{
    public class UserController {
    }
}

Mijn fouten zijn gewijzigd door stap 1 te wijzigen als:

  • Stap 1: Voeg > Controller
  • Stap 2: Gebruikerscontroller
  • .
  • .
  • .

overeenkomstige code gemaakt:

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

Het probleem was:
Ik had mijn klas niet geërfd van Controller

Andere berichten in mijn fout inbegrepen – die allemaal afkomstig waren van dit probleem:

fout CS0117: ‘ModelState’ bevat geen definitie voor ‘IsValid’

fout CS0103: De naam ‘RedirectToAction’ bestaat niet in de
huidige context

fout CS0103: De naam ‘View’ bestaat niet in de huidige context

fout CS0103: de naam ‘ViewBag’ bestaat niet in de huidige context

fout CS0103: De naam ‘Json’ bestaat niet in de huidige context

Ik hoop dat deze verandering degenen helpt die bij hun eerste stappen niet hebben opgelet.


Antwoord 11

Na minstens 90% van elke oplossing/truc van dit onderwerp (en andere) geprobeerd te hebben, heb ik het eindelijk opgelost!! Spoiler alert, er is geen spoor van logica is de volgende zogenaamde “oplossing”: het uitvoeren van de oplossing met alle tabbladen gesloten werkte uiteindelijk, terwijl niets anders me de “ViewBag&Co bestaat niet in de huidige context” zou hebben bespaard. .. Je bent gewaarschuwd, geen gekke logica!

Ik hoop dat het ooit iemand zal helpen ^^


Antwoord 12

Het uit- en weer inschakelen werkte voor mij.
Je kunt proberen Visual Studio opnieuw op te starten.


Antwoord 13

Ik heb het probleem kunnen oplossen door het volgende bovenaan mijn .cshtml-pagina toe te voegen

@{ViewBag.Title = "Title";}

Na het opnieuw compileren kon ik deze regel verwijderen en was de fout verdwenen.


Antwoord 14

Ik had een soortgelijk probleem met een van mijn visies. In mijn geval heb ik gewoon de oplossing opgeschoonden geprobeerd het opnieuw op te bouwenen zijn werken.


Antwoord 15

de volgende link kan u helpen.

Het zal u laten zien wat het probleem zou kunnen zijn

het lost mijn probleem op. op de een of andere manier had ik mijn web.config-bestand uit de weergavemap verwijderd.


Antwoord 16

Ik geconfronteerd met hetzelfde probleem. Ik heb het schoon, bouwen en opnieuw opbouwen, maar werkte niet voor mij.

Dus eindelijk deed ik zoals hieronder:

  1. Druk op Windows-toets + R
  2. type % temp%
  3. Hit Enter
  4. Verwijderen Alle bestanden (als een paar bestand niet lieten, geen problemen)

Ik hoop dat het ook voor jullie werkt.


17

Na het upgraden van een van de applicaties van mijn klant van ASP MVC 4 naar ASP MVC 5, hadden we ontwerpersfouten met betrekking tot HTML-helpers en Viewbag in CSHTML-pagina’s.

Om die problemen op te lossen, moet u ervoor zorgen dat u het volgende doet:
Installeer ASP.NET Web Helpers Bibliotheek van Nuget
Open het web.config van het project en werk de bindingen bij als ze niet zijn bijgewerkt bij het installeren van de Nuget-pakketten bijvoorbeeld

<dependentAssembly>
  <assemblyIdentity name=”System.Web.Mvc” publicKeyToken=”31bf3856ad364e35″ />
  <bindingRedirect oldVersion=”0.0.0.0-5.2.2.0″ newVersion=”5.2.2.0” />
</dependentAssembly>

Zoek “Webpagina’s: versie” in de appsettings en update deze naar versie 3.0.0.0. Mijn web.config had

en ik heb het bijgewerkt naar

Start Visual Studio opnieuw en opnieuw opgebouwd. Mogelijk moet u de bin-map voor uw project verwijderen

Bezoek dit:
https://lajak.wordpress.com/2014/11/16/asp-mvc-5-viewbag-hees-not-exist-in-the-current-context/


18

Na het hebben van al het andere en een beetje gefrustreerd, heb ik het .NET-framework op mijn MVC5-app geüpgraded van 4,5 tot 4.5.2. Op de een of andere manier heeft het mijn probleem opgelost. Hoop dat het helpt.


19

Ik heb opgelost in web.config

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

met

<add key="webpages:Enabled" value="true" />

Other episodes