Asp.net-Mvc

Visual Studio 無法解析模型,但載入了 Razor 頁面

  • January 28, 2022

我有一個 MVC 5 應用程序,由空模板製成。我已經Microsoft.AspNet.Mvc通過 Nuget 添加,我的封包件如下所示:

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

我有一個 Razor 頁面,它聲明一個模型@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 一直說有一個錯誤:

無法解析符號“模型”

它不會辨識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=\"Web\" /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>

並且文件夾Web.Config中的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=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>

如果你有 resharper ,暫停它將修復,即:Tool - Options - Resharper - Suspend

選項菜單截圖

關閉 Visual Studio 的所有實例對你有用,太好了。

我會定期出現這種症狀,但我正在使用 Resharper,要修復它,我必須

  • 進入 Resharper-Options “清除記憶體”,
  • 然後關閉並重新打開 Visual Studio

引用自:https://stackoverflow.com/questions/33130521