【问题标题】:asp.net mvc 5 'ModelType' is not declaredasp.net mvc 5 'ModelType' 未声明
【发布时间】:2014-09-15 11:47:48
【问题描述】:

我最近对我的两个项目进行了 NuGet 包更新。所以我使用的是 Microsoft.AspNet.Mvc 5.2.0 版。一个项目运行良好,另一个项目出现问题,因为我现在无法创建强类型剃刀视图。以下是我的观点之一:

@ModelType   MyServiceLibrary.EmailTemplateModelObject
Dear @Model.FirtName,<br><br>

我收到以下错误:

'ModelType' 未声明。由于其保护级别,它可能无法访问。

这个问题中引用的内容几乎是什么:asp.net mvc 3 'ModelType' is not declared

我已尝试实施建议的修复,但没有成功。我正在使用 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>

谁能看到我在这里做错了什么?

【问题讨论】:

  • 应该是@model MyServiceLibrary.EmailTemplateModelObject
  • 我认为这是 c# 语法,而不是 vb.net
  • Web.config 是否适用于所有视图文件夹(以及您正在使用的任何区域)?如果您有更多 Web.config,请检查它们以确保它们相似。
  • 你对罗文感兴趣。上面列出的 web.config 仅在“views”目录中。我已经用这些设置更新了主 web.config ......现在......奇怪的行为。现在可以识别 ModelType,但不能识别 @Model。收到超过 100 个“无法识别模型”编译错误...
  • 我会不理会主 Web.config,但请检查任何其他 Web.config 文件。

标签: asp.net-mvc vb.net razor asp.net-mvc-5


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      在我的例子中,我正在使用“管理 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,一切正常。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          好吧,我能够将问题缩小到“智能感知不适用于 MVC5”的主题,并找到了一个非常简单的解决方案来解决我的问题:

          第 1 步:更新网页:版本

          改变

          <add key="webpages:Version" value="2.0.0.0" />
          

          <add key="webpages:Version" value="3.0.0.0" />
          

          第 2 步:重置我的设置。

          工具 > 导入和导出设置... > 重置所有设置

          第 3 步:关闭所有文件,重新启动 Visual Studio,humpty dumpty 又回到了一起!

          来源:Visual Studio 2013 IntelliSense stops working for ASP.NET MVC5 Controllers

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-01-28
            • 1970-01-01
            • 2014-02-20
            • 2021-09-09
            • 2022-01-17
            • 2015-02-14
            • 2016-06-19
            相关资源
            最近更新 更多