6

我有一個MVC 5應用程序,由空模板製成。我已經通過的NuGet添加Microsoft.AspNet.Mvc,我的包文件看起來像這樣:Visual Studio無法解析模型,但剃刀頁加載

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

我有一個聲明瞭一個模型@model IEnumerable<Models.ToDoModel>,並用它在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> 

當我運行的頁面,它呈現正常,但是Visual Studio中堅持說,有一個錯誤:

cannot resolve symbol 'model'

它不會承認model關鍵字或給我任何智能感知。

Web.Config看起來像這樣:

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

,並在Views文件夾中的Web.Config樣子:

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

你試過關閉並重新打開VS? – DavidG

+0

@DavidG我有,但是,我有其他Visual Studio的實例打開。關閉他們*全部*工作! – BanksySan

+0

在這種情況下,問題解決了! – DavidG

回答

3

你web.configs看起來都很好。 Visual Studio經常會對這樣的事情感到困惑。我的建議是關閉Visual Studio並重新打開它。此外,正如您發現的,關閉全部可能需要打開VS實例。

3

關閉Visual Studio的所有實例都適合您,非常棒。

我定期得到這個症狀,但我使用ReSharper的,並修復它,我必須

  • 進入ReSharper的選項「清除緩存」,
  • ,然後關閉並重新打開 的Visual Studio
+1

你不需要反彈Visual Studio,你可以去Options/resharper並點擊暫停按鈕,然後繼續。同樣的效果。 – osoviejo

1

我遇到過這個問題,並試着在陽光下的每個解決方案。一週後,我嘗試編輯web配置(在視圖和根目錄中),重新加載項目,清除resharper緩存..你的名字,我試過了。 我加載了一箇舊的項目,並在「佈局」和「模型」部分懸停以查看他們需要的名稱空間。經仔細檢查,所需的命名空間已從我的項目中刪除。我不知道如何 - 我最近進行了升級..無論如何 - 我從解決方案文件夾System.Web.Mvc和另一個引用這2個文件,重建,它的工作。我可以當場跳舞。希望這可以幫助某個人!

12

如果你有resharper,掛起它會修正,即:Tool - Options - Resharper - Suspend