6

Ich habe eine MVC 5-Anwendung, die aus der leeren Vorlage erstellt wurde. Ich habe Microsoft.AspNet.Mvc über Nuget hinzugefügt und meine Pakete Datei sieht so aus:Visual Studio kann das Modell nicht auflösen, aber Razor-Seiten laden

<packages> 
    <package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net46" /> 
    <package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net46" /> 
    <package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net46" /> 
    <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net46" /> 
    <package id="Microsoft.Net.Compilers" version="1.0.0" targetFramework="net46" developmentDependency="true" /> 
    <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net46" /> 
</packages> 

ich eine Razor-Seite, die ein Modell mit @model IEnumerable<Models.ToDoModel> erklärt und verwendet sie in einer foreach-Schleife.

@model IEnumerable<Models.ToDoModel> 

<!DOCTYPE html> 

    <html> 
    <head> 
     <meta name="viewport" content="width=device-width" /> 
     <title>Home</title> 
    </head> 
    <body> 
    <h1>Hello World!</h1> 
    <ul> 
     @foreach (var item in Model) 
     { 
      <li>ID: @item.Id</li> 
     } 
    </ul> 
    </body> 
</html> 

Wenn ich die Seite laufen, ist es fein rendert, aber Visual Studio sagte beharrlich gibt es einen Fehler:

cannot resolve symbol 'model'

Es wird nicht das model Schlüsselwort erkennen oder jede Intellisense geben Sie mir.

Mein Web.Config sieht so aus:

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
    For more information on how to configure your ASP.NET application, please visit 
    http://go.microsoft.com/fwlink/?LinkId=169433 
    --> 
<configuration> 

    <system.web> 
    <compilation debug="true" targetFramework="4.6"/> 
    <httpRuntime targetFramework="4.6"/> 
    </system.web> 
    <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> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/> 
     <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/> 
     <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/> 
     <bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0"/> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

und die Web.Config im Views Ordner wie folgt aussieht:

<?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.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.Routing" /> 
     </namespaces> 
    </pages> 
    </system.web.webPages.razor> 

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

    <system.webServer> 
    <handlers> 
     <remove name="BlockViewHandler"/> 
     <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> 
    </handlers> 
    </system.webServer> 
</configuration> 
+0

Sie haben versucht, Schließen und erneuten Öffnen VS? – DavidG

+0

@DavidG Ich hatte jedoch andere Instanzen von Visual Studio geöffnet. Schließen sie * alle * funktionierte! – BanksySan

+0

In diesem Fall, Problem gelöst !! – DavidG

Antwort

3

Ihre web.configs beide gut aussehen. Visual Studio kann oft über solche Dinge verwirrt werden. Ich empfehle, Visual Studio zu schließen und es erneut zu öffnen. Wie Sie festgestellt haben, kann auch das Schließen von offenen Instanzen von VS erforderlich sein.

3

Schließen Alle Instanzen von Visual Studio funktionierte für Sie, großartig.

ich dieses Symptom regelmäßig, aber ich ReSharper benutze und es zu beheben Ich muss

  • gehen in ReSharper-Optionen „Cache löschen“,
  • und dann schließen und wieder öffnen Visual Studio
+1

Sie müssen Visual Studio nicht bouncen, Sie können einfach zu Optionen/Resharper gehen und die Suspend-Taste drücken, dann Resume. Gleicher Effekt. – osoviejo

1

traf ich dieses Problem und versucht, jede Lösung unter der Sonne. Eine Woche lang habe ich versucht, die Webkonfiguration (in der Ansicht und im Stammverzeichnis) zu bearbeiten, das Projekt neu zu laden und die Nachschärfer-Caches zu löschen. Sie haben es benannt, ich habe es versucht. Ich habe ein altes Projekt geladen und bin über die Abschnitte "Layout" und "Modell" gelaufen, um zu sehen, welche Namespaces sie benötigen. Bei näherer Betrachtung wurden die benötigten Namespaces aus meinem Projekt entfernt. Ich habe keine Ahnung wie - ich hatte kürzlich ein Upgrade durchgeführt .. Jedenfalls - ich habe diese 2 Dateien aus dem Lösungsordner System.Web.Mvc referenziert und ein anderes, neu aufgebaut, und es hat funktioniert. Ich hätte auf der Stelle tanzen können. Hoffe, das hilft jemandem auf der ganzen Linie!

12

Wenn Sie ReSharper haben, suspendiert es beheben heißt: Tool - Options - Resharper - Suspend

Verwandte Themen