6

Mam aplikację MVC 5, utworzoną z pustego szablonu. Dodałem Microsoft.AspNet.Mvc poprzez Nuget i mój plik pakiety wygląda tak:Program Visual Studio nie może rozpoznać modelu, ale strony Razor ładują się

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

Mam stronę Razor deklaruje, że model z @model IEnumerable<Models.ToDoModel> i używa go w pętli foreach.

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

Kiedy uruchomić stronę, renderuje w porządku, jednak Visual Studio uporczywie powiedział wystąpi błąd:

cannot resolve symbol 'model'

To nie rozpozna słowa kluczowego model lub dać mi jakieś Intellisense.

My Web.Config wygląda tak:

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

i Web.Config w folderze Views wygląda następująco:

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

Próbowałeś zamknięcie i ponowne otwarcie VS? – DavidG

+0

@DavidG Miałem jednak otwarte inne instancje Visual Studio. Zamknięcie ich * wszystko * działało! – BanksySan

+0

W takim przypadku problem rozwiązany! – DavidG

Odpowiedz

3

Twoje web.configs zarówno wyglądać dobrze. Visual Studio często może się mylić z takimi rzeczami. Polecam zamknąć Visual Studio i ponownie go otworzyć. Ponadto, jak się zorientowałeś, może być wymagane zamknięcie otwartych instancji VS.

3

Zamknięcie WSZYSTKICH wystąpień Visual Studio działało dla ciebie świetnie.

otrzymuję ten objaw okresowo, ale używam resharper i go naprawić muszę

  • wchodzić Resharper-opcje "Wyczyść pamięć podręczną",
  • a następnie zamknij i ponownie otwórz Visual Studio
+1

Nie musisz odbijać Visual Studio, możesz po prostu przejść do Options/Resharper i nacisnąć przycisk Suspend, a następnie Resume. Ten sam efekt. – osoviejo

1

Napotkałem ten problem i wypróbowałem każde rozwiązanie pod słońcem. Przez tydzień próbowałem edytować konfigurację internetową (w widoku i katalogu głównym), ponownie załadować projekt, wyczyścić pamięć podręczną resharperów ... jak to nazwać, spróbowałem. Załadowałem stary projekt i podskakiwałem nad sekcjami "Układ" i "Model", aby zobaczyć, jakie obszary nazw są wymagane. Po dokładniejszym zbadaniu, wymagane przestrzenie nazw zostały usunięte z mojego projektu. Nie mam pojęcia, jak - niedawno dokonałem aktualizacji. W każdym razie - odniosłem się do tych 2 plików z folderu System.Web.Mvc i innego, przebudowałem i działało. Mógłbym tańczyć na miejscu. Mam nadzieję, że to pomoże komuś w dół!

12

Jeśli masz ReSharper, zawieszania będzie naprawić tj: Tool - Options - Resharper - Suspend

Powiązane problemy