我最近对我的两个项目进行了 NuGet 包更新。所以我使用 Microsoft.AspNet.Mvc 版本 5.2.0。一个项目运行良好,另一个项目则有些不正常,因为我现在无法创建强类型的剃刀视图。这是我的一个观点的片段:
@ModelType MyServiceLibrary.EmailTemplateModelObject
Dear @Model.FirtName,<br><br>
我收到以下错误:
“ModelType”未声明。由于其保护级别,它可能无法访问。
几乎正是这个问题中引用的内容:asp.net mvc 3 'ModelType' is notclarified
我尝试实施建议的修复,但没有成功。我使用的是vb.net环境。这是我的 ~/Views/Web.config 中的内容:
<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.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.Optimization"/>
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
有人能看到我在这里做错了什么吗?
我在创建新的 MVC 5 项目时遇到了非常类似的问题,尽管它是未声明的“布局”。
我打开“工具”>“NuGet 包管理器”>“管理解决方案的 NuGet 包”项,选择“已安装的包”,然后单击“全部更新”,这通过将所有各种 DLL 和 web.config 文件更新到最新版本来解决我的问题。
我们在 VS 2012 下遇到了同样的问题。我们通过以下方式解决了它:
web.config
并重置所有设置注意:在重置之前,我导出了设置;重置后,我重新导入了除 Web Projects 类别之外的所有设置,并且一切仍然有效。
就我而言,我使用“管理 Nuget 包...”将 MVC5 添加到项目中,该项目在创建时仅具有 WebApi。 MVC 的许多其他部分都丢失了(RouteConfig.vb、对 System.Web.Routing 的引用、Views 文件夹内的 Web.config 等),但解决此问题的关键是确保 ~/web.config (站点根目录中的 web.config)有一个 appSettings 节点,其中包括:
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
</appSettings>
添加后,我重新启动 VS 2013,一切正常。
我在 VS 2013 中遇到了同样的问题。我关闭了 Visual Studio 并重新打开它,问题消失了。
嗯,我能够将问题缩小到“智能感知不适用于 MVC5”的主题,并找到一个非常简单的修复来解决我的问题:
第1步:更新网页:版本
改变
<add key="webpages:Version" value="2.0.0.0" />
到
<add key="webpages:Version" value="3.0.0.0" />
第 2 步:重置我的设置。
工具 > 导入和导出设置... > 重置所有设置
第 3 步:关闭所有文件,重新启动 Visual Studio,矮胖子又回来了!
我在使用 Visual Studio 2022 时也遇到了同样的问题。
更新
Views\web.config
以下部分中的版本修复了该问题:
<configSections> <sectionGroup name="system.web.webPages.razor">
中的 2.0.0.0 至 3.0.0.0
<system.web.webPages.razor> <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc
中的4.0.0.0 至 5.2.3.0