asp.net mvc 5 'ModelType' 未声明

问题描述 投票:0回答:6

我最近对我的两个项目进行了 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>

有人能看到我在这里做错了什么吗?

asp.net-mvc vb.net razor asp.net-mvc-5
6个回答
4
投票

我在创建新的 MVC 5 项目时遇到了非常类似的问题,尽管它是未声明的“布局”。

我打开“工具”>“NuGet 包管理器”>“管理解决方案的 NuGet 包”项,选择“已安装的包”,然后单击“全部更新”,这通过将所有各种 DLL 和 web.config 文件更新到最新版本来解决我的问题。


3
投票

我们在 VS 2012 下遇到了同样的问题。我们通过以下方式解决了它:

注意:在重置之前,我导出了设置;重置后,我重新导入了除 Web Projects 类别之外的所有设置,并且一切仍然有效。


2
投票

就我而言,我使用“管理 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,一切正常。


1
投票

我在 VS 2013 中遇到了同样的问题。我关闭了 Visual Studio 并重新打开它,问题消失了。


0
投票

嗯,我能够将问题缩小到“智能感知不适用于 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 2013 IntelliSense 停止为 ASP.NET MVC5 控制器工作


0
投票

我在使用 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
该项目引用了这些 Nuget 包:

    Microsoft.AspNet.WebPages 3.3.0
  • 微软.AspNet.Razor 3.3.0
  • 微软.AspNet.Mvc 5.3.0
© www.soinside.com 2019 - 2024. All rights reserved.