wake-up-neo.net

MVC Razor view Intellisense in VS 2013/2015/2017 gebrochen

Ich habe ein vorhandenes Projekt in VS2010 geschrieben, das beim Laden in VS2010 einwandfrei funktioniert.

Wenn ich dasselbe Projekt in VS2013 lade, enthalten die MVC Razor-Ansichten viele Fehler, als ob die Konfigurationsdatei im Ordner "Ansichten" fehlt. 

Es scheint, dass der Razor-Editor nicht korrekt mit den Konfigurationsdateien aus dem Stammverzeichnis und dem Ordner "Ansichten" geladen wurde. Stattdessen werden mir Fehler wie ... angezeigt.

The name 'model' does not exist in the current context

und ...

'System.Web.WebPages.Html.HtmlHelper' does not contain a definition for 'LabelFor' 
and no extension method 'LabelFor' accepting a first argument of type 
'System.Web.WebPages.Html.HtmlHelper' could be found 
(are you missing a using directive or an Assembly reference?)

...

Irgendeine Idee, was würde das bewirken?

Bearbeiten Sie: Config-Dateien wie angefordert ....

Von der Hauptdatei web.config (nicht alles, da es viel zu groß ist, um sie zu posten)

<runtime>
    <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="Ninject" culture="neutral" publicKeyToken="c7192dc5380945e7" />
            <bindingRedirect newVersion="3.0.0.0" oldVersion="0.0.0.0-3.0.0.0" />
        </dependentAssembly>
        <dependentAssembly>
            <assemblyIdentity name="Microsoft.Practices.EnterpriseLibrary.Validation" culture="neutral" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect newVersion="5.0.505.0" oldVersion="0.0.0.0-5.0.505.0" />
        </dependentAssembly>
        <dependentAssembly>
            <assemblyIdentity name="System.Web" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
        </dependentAssembly>
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
        </dependentAssembly>
        <dependentAssembly>
            <assemblyIdentity name="Microsoft.Practices.ServiceLocation" publicKeyToken="31bf3856ad364e35" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-1.2.0.0" newVersion="1.2.0.0" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>

Konfigurationsdatei in "~/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=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
            <section name="Host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
            <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.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=3.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" />
                <add namespace="Emedia.Common.Mvc.Views.Helpers"/>
                <add namespace="Emedia.Common.Mvc.Views.Extensions"/>
        <add namespace="Emedia.Common.Utilities"/>
        <add namespace="Emedia.Common.Utilities.Extensions"/> 
        <add namespace="Emedia.Common.Mvc.Controllers.Helpers"/>
                <add namespace="Emedia.Resources.Service"/>
        <add namespace="Emedia.Subscriber.Controllers"/>
        <add namespace="Emedia.Subscriber.Controllers.ViewModels"/>
            </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>
        <pages
            validateRequest="false"
            pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
            pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
            userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
            <controls>
                <add Assembly="System.Web.Mvc, Version=3.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>

47
War

Ich habe mir überlegt, @ ChrisMoschinis Beitrag zu editieren, dachte aber, es wäre anders genug. Mein Problem war, dass ich eine neue MVC5-Anwendung gestartet habe und blind über zu viele web.config-Einstellungen eines alten MVC3-Projekts kopiert habe, das ich als Vorlage/Ausgangspunkt verwenden wollte. Dadurch wurden einige ungültige Versionen in meiner web.config referenziert. 

Um das Problem zu beheben, habe ich ein weiteres neues MVC5-Projekt erstellt und dafür gesorgt, dass die folgenden Konfigurationswerte in meinem fehlerhaften Projekt mit der nicht modifizierten Vanilla-MVC5-App übereinstimmen. Kopieren Sie diese Versionsnummern nicht mehr blind. Stellen Sie nur sicher, dass sie mit einer Vanilla MVC-App der Version übereinstimmen, mit der Sie arbeiten möchten.

in root web.config:

<appSettings>
    ...
    <add key="webpages:Version" value="3.0.0.0"/> 
    ...
</appSettings>
<system.web>
    ...
    <compilation debug="true" targetFramework="4.5.1"/>
    <httpRuntime targetFramework="4.5.1"/>
    ...
</system.web>

im Views\Web.config:

<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>


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

Einige meiner Projekte hatten diese Probleme seit Monaten. Ich habe so viele Problemumgehungen ausprobiert und nichts hat funktioniert. Die Probleme schienen bei den Projekten zu liegen: Für dasselbe Projekt wird auf allen PCs mit Visual Studio ein Intellisense-Problem auftreten. Schließlich kam ich durch diesen Beitrag: http://www.dennisonpro.info/manage-intellisense-in-razor-views-with-mvc-5-using-custom-builds-in-visual-studio-2013/

In unserem Fall war die Ursache das Ausgabeverzeichnis aller dieser Projekte, die nicht in "bin \" geändert wurden. Indem Sie den Ausgabepfad wieder in "bin \" ändern (und das Projekt bereinigen, Visual Studio schließen und wieder öffnen), erhielt ich Intellisense zurück.

Der Beitrag, auf den oben verwiesen wurde, bot auch eine Problemumgehung, um ein separates Ausgabeverzeichnis zu verwalten, während er noch über Intellisense verfügt.

Hoffe das hilft jemandem eines Tages.

15
Jim

MS sagt, dass für VS2013 "Intellisense für Rasiererdateien (CSHTML und VBHTML) auf HTML-Markup beschränkt sind."

Wenn Sie jedoch diese beiden Zeilen in jedes .cshtml-Dokument einfügen, funktioniert die Intellisense-Funktion für MVC3 in VS2013 erneut:

@using System.Web.Mvc.Html
@inherits System.Web.Mvc.WebViewPage<dynamic>

Anstelle von dynamic können Sie den Typ Ihres Modells eingeben.

8
SergeyT

Ich habe ein MVC3-Projekt auf MVC5 aktualisiert und habe alles unternommen, um die einzig wahre Antwort auf dieses von Microsoft empfohlene Problem zu vermeiden:

Beginnen Sie erneut mit einem neuen Projekt und übertragen Sie die resultierenden Bits in Ihr vorhandenes Projekt.

Dieser Prozess ist eine große Zeitverschwendung, und es scheint, als sollte Microsoft einen echten Upgrade-Pfad durchführbar machen, aber ich möchte Ihnen hier sagen, dass das Problem hier ein emotionales, nicht technisches Problem ist: Sie müssen nur ein neues MVC5-Projekt erstellen , und ersetzen Sie Folgendes durch das Ergebnis dieses neuen MVC5-Projekts:

\Packages\*
\Project\Project.csproj
\Project\packages.config
\Project\Web.Config
\Project\Views\Web.Config
\Project\Areas\*\Views\Web.Config

Wenn Sie dies nicht tun, gehen Sie für immer in Kreisen herum und versuchen, die Einstellung zu finden, die die Dinge in die Luft sprengt. In unserem Fall hatte ich die Web.Configs, die alle identisch mit dem neu erstellten MVC5-Projekt mit Razor Intellisense-Funktion waren. Ich hatte alle möglichen Upgrade-Tools ausgeführt, die ich finden konnte, nennen Sie es. Intellisense weigerte sich zu arbeiten.

Nachdem Intellisense die .csproj und die web.configs usw. einfach weggeblasen hatte, kam Intellisense auf magische Weise zurück. Bei der Differenzierung der beiden Seiten stimmt keine der Antworten, die ich irgendwo gefunden habe, mit dem ab, was ich sehe. Web.Configs sind fast identisch und die verschiedenen Bits sollten keine Rolle spielen. Die Hauptänderung ist wirklich das, was in\Packages\ist - viele ältere Razor-, MVC- und WebPages-Dlls sind weg. Das könnte der Trick sein, aber überspringen Sie das und sparen Sie viel Zeit: Erstellen Sie einfach ein neues MVC5-Projekt und legen Sie die oben aufgeführten Dateien ab. Es ist die einzige vernünftige Methode zum Upgrade.

7
Chris Moschini

Ich habe dieses Problem kürzlich selbst gelöst. Ich habe ein Upgrade von MVC4 auf MVC5 (speziell 5.1) durchgeführt. Ein Upgrade auf eine neuere Version von MVC verursachte diesen Chaos und ich verbrachte Stunden damit, sie zu lösen. Kleinere Änderungen an der Web.Config-Datei haben das Problem mit der Intellisense behoben.

Sie sagten, dass das Projekt in VS2010 funktioniert, aber nicht 2013? Siehe diese Antwort hier .

Ich empfehle ein Upgrade auf MVC5. Es ist nicht schmerzhaft und das Upgrade sollte ziemlich nahtlos sein.

Wenn Sie ein Upgrade auf MVC5 durchführen und immer noch nicht von Intellisense profitieren, müssen Sie die Web.Config-Datei manuell aktualisieren, da das Upgrade dies möglicherweise nicht richtig macht!

Hier ist eine modifizierte Version Ihres Web.conifg im Ordner / Views, der die Änderungen für MVC5 widerspiegeln sollte.

<?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.1.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" />
            <add namespace="Emedia.Common.Mvc.Views.Helpers"/>
            <add namespace="Emedia.Common.Mvc.Views.Extensions"/>
    <add namespace="Emedia.Common.Utilities"/>
    <add namespace="Emedia.Common.Utilities.Extensions"/> 
    <add namespace="Emedia.Common.Mvc.Controllers.Helpers"/>
            <add namespace="Emedia.Resources.Service"/>
    <add namespace="Emedia.Subscriber.Controllers"/>
    <add namespace="Emedia.Subscriber.Controllers.ViewModels"/>
        </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>
    <pages
        validateRequest="false"
        pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
        <controls>
            <add Assembly="System.Web.Mvc, Version=5.1.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>

Wenn ein Upgrade nicht möglich ist, müssen Sie VS2010 wahrscheinlich weiterhin verwenden, wenn Sie die Unterstützung für MVC3 unterstützen möchten. Ich empfehle jedoch dringend ein Upgrade auf MVC5.

6
Joshua H

Für alle anderen, die darüber stolpern könnten, habe ich keine der vorherigen Antworten gefunden, um mein Problem wirklich zu lösen oder sich nicht damit zu befassen. Wie auch immer, der Weg, der das Problem gelöst hat und Intellisense wieder zum Laufen gebracht hat, war, in meinen Ordner "Bin" zu gehen und dort alle Dateien zu löschen und dann zu bereinigen/neu aufzubauen, und es wurde behoben. 

5
makinitmine

Als ich ein neues Projekt erstellte, funktionierte Intellisense gut, aber aus irgendeinem Grund funktionierte es in unserem aktuellen Projekt nicht. Der einzige Unterschied, den ich in der Views/Web.config-Datei fand, war, dass unsere MVC-Version 5.2.0.0 und ein neues Projekt 5.0.0.0 hatte. Was für uns funktionierte, war dies zu ändern:

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

zu diesem:

<Host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc,
     Version=5.2.0.0, Culture=neutral, PublicKeyToken=123JHJF56AD364E35" />
5
Simon Bengtsson

Eine Kombination der folgenden Punkte half mir, das Problem zu lösen:

  • Ein neues MVC-Projekt erstellen
  • Vergleich der Versionen in den Ansichten web.config-Dateien der vorhandenen und neuen Projekte
  • Versionen entsprechend anpassen (siehe unten)
  • Löschen aller Dateien im Ordner bin
  • Lösung reinigen
  • und schließlich die Lösung neu aufbauen
<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.2.3.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.Optimization"/>
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

  <appSettings>
    <add key="webpages:Version" value="3.0.0.0"/>
    <add key="webpages:Enabled" value="false" />
  </appSettings>
  [...]
2
Norman

Ich habe das immer und immer wieder gehabt; Ich bin bei meinem dritten neuen Projekt und es macht mich verrückt! Ich glaube, ich habe den Grund für das Problem gefunden. Ich hatte Dateien hinzugefügt, aber nicht in Visual Studio aufgenommen. Also habe ich mich jetzt entschieden, alle Dateien anzusehen:

 enter image description here

Dann füge ich für alle meine Ordner, die ich hinzugefügt habe, hinzu:

 enter image description here

Das Problem ist, dass dies nur angezeigt wird, wenn Sie eine MVC-Site als Projekt öffnen, nicht wenn Sie sie als Website öffnen. 

2
Andy Brown

Diese Frage wurde gelöst, aber ich füge dies für zukünftige Leute hinzu, da keiner der oben genannten Punkte für mich funktioniert hat:

Versuchen Sie, Visual Studio als Administrator auszuführen.

Als ich irgendwie versuchte, meine Nuget-Pakete (die alle erforderlichen Referenzen wie System.Web.Mvc enthalten) zu löschen, wurde mir gesagt, ich brauche die Erlaubnis von MyPC\Me. Lächerlich! ) In jedem Fall sollte ich als Administrator mindestens auf die Dateien zugreifen, die Intellisense korrigiert haben.

2
emragins

In meinem Fall habe ich alle Ansichten aus einem Bereich in den Stammansichtsordner verschoben. Ich denke, VS wurde verwirrt, wo meine web.config war. Ich habe es in web.config umbenannt (web.config) und dann den Inhalt der Konfiguration bearbeitet (z. B. das Ändern der Versionsnummer der Host-DLL des Rasierers von 5.2.2.0 auf 5.2.3), aber dann wurde es geändert zurück.

Dann ging ich etwa 30 Minuten lang spazieren und kam zurück und VS wurde neu gestartet und es wurde behoben! 

1
Beanwah

Aktualisieren Sie die NuGet-Pakete mit der Package Manager-Konsole in Tool, Library package Manager.

In der Befehlszeile ..PM> Update-Package Dadurch werden NuGet-Pakete aktualisiert, die aktuelle Version von System.web.MVC überprüft und diese Version in der Datei web.config im Ordner Views aktualisiert. 

<system.web.webPages.razor>
    <Host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.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.Optimization"/>
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.Webpages"/>
      </namespaces>
    </pages>
  </system.web.webPages.razor>

Schließen Sie die Lösung und öffnen Sie sie erneut. 

Hoffe das klappt !!!

1
Raghu

Ich hatte schließlich einige andere Probleme auf meinem PC wegen eines Netzwerk-Server-Absturzes und musste Visual Studio neu installieren. 

Dies löste anscheinend das Problem ... Ich habe keine Ahnung, wie es ging.

Ich frage mich, ob es in meinem Fall vielleicht nur eine fehlerhafte Installation war und nicht das typische Problem.

Aus diesem Grund werde ich dies als Antwort markieren, aber +1 alle anderen Antworten, da sie möglicherweise gute Antworten auf dieses Problem sind.

Ich habe jedoch festgestellt, dass Microsoft eindeutig feststellt, dass Visual Studio 2013 Intellisense nicht auf niedrigeren Versionen von MVC als 4 unterstützt. Wenn Sie also MVC 3 verwenden, aktualisieren Sie Ihr Projekt, wenn Sie eine neuere Version von MVC verwenden und nichts anderes hier funktioniert .

Erwähnenswert ist auch ... MVC ist jetzt ein Nuget-Paket, also installieren Sie MVC nicht von der Download-Redist. Erlauben Sie VS, dies für Sie herauszufinden.

1
War

Ich habe mich geändert 

<Host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc,
 Version=5.2.0.0, Culture=neutral, PublicKeyToken=123JHJF56AD364E35" />

zu diesem:

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

Und es hat funktioniert!

1
StepUp

Wenn Sie in MVC 5 versuchen, einen Bereich hinzuzufügen, indem Sie einfach einen Ordner unter Bereiche und Unterordner für Controller, Ansichten, Modelle usw. hinzufügen, verfügen Sie nicht über die Datei * AreaRegistration.cs, die den Bereich registriert, oder die Datei web.config In Ansichten, in denen VS die Rasiererelemente verstehen kann, die Sie in Ihre Ansichten aufnehmen. Das Ergebnis ist, dass Intellisense in Ihrer Ansicht für Dinge wie ViewBag nicht funktioniert. Wenn Sie Arbeitsbeispiele für diese Dateien in anderen Bereichen haben, können Sie sie kopieren und gegebenenfalls aktualisieren - oder Sie können mit Ihrem Bereich erneut beginnen, indem Sie mit der rechten Maustaste auf Bereiche klicken und einen Add-Bereich ausführen, der diese Dateien für Sie erstellt. 

Ich bin auf ein ähnliches Problem gestoßen. Ich hatte mit der VS2015 Community Edition ein MVC 5-Projekt erstellt, an dem ich mit VS2013 Ultimate arbeiten musste. Das Entfernen des folgenden <system.codedom></system.codedom>-Blocks aus der Datei root.config erlaubte es IntelliSense schließlich, wieder in meinen Razor-Ansichten von VS2013 zu arbeiten.

<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=\&quot;Web\&quot; /optionInfer+" />
  </compilers>
</system.codedom>
0
Casey Graves

Ich hatte dieses Problem sechs Monate lang und wusste gerade, dass ich meine @model-Anweisungen an den Anfang der Seiten verschieben musste. Ich hatte sie vorher in Codeblöcken.

0
Steven

Ich verwende Visual Studio 2012. Ich habe alle oben genannten Schritte ausprobiert, aber das Problem wird durch die Installation behoben:

ASP.NET und Web Tools 2013.1: http://blogs.msdn.com/b/webdev/archive/2013/11/18/announcing-release-of-asp-net-und-web-tools -2013-1-for-visual-studio-2012.aspx

0
RAY

Ich habe fast alle Lösungen ausprobiert, wurde aber nicht intelligent und am Ende fand ich eine Lösung:

  1. Gehen Sie zum Projektmappen-Explorer
  2. Klicken Sie mit der rechten Maustaste auf .cshtml-Datei oder eine Ansichtsdatei
  3. Wählen Sie die Option "Öffnen mit" und setzen Sie den HTML-Editor (Standard) als Standard
0
akshita salunke

Beim Upgrade von MVC 3 auf 5 habe ich festgestellt, dass der AppSettings-Schlüssel webpages:version in meinem Stammverzeichnis Web.config auf 2.0.0.0 gesetzt war. Das Ändern in 3.0.0.0 hat dieses Problem behoben.

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

0
Matthew Carroll

Ich verwende VS 2017 Professional, und ich habe fast jede Antwort in diesem Beitrag und auch die in diesem Beitrag ausprobiert, aber nichts hat für mich funktioniert. Gestern habe ich VS auf Version 15.2 (26430.6) Release aktualisiert, und intellisense ist wieder in meinen cshtml-Dateien!

0

Setzen Sie die CopyLocal-Eigenschaft der System.Web.Mvc-Referenz auf true. Manchmal hilft dies bei Intellisense. 

0
Zachary Kniebel