asp.net mvc 5中'ModelType'未声明

3
我最近在两个项目中进行了NuGet包更新。因此,我正在使用Microsoft.AspNet.Mvc版本5.2.0。一个项目运作良好,另一个有点不对劲,因为我现在无法创建强类型的Razor视图。以下是我的一个视图的片段:
@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>

有人可以看出我在这里做错了什么吗?


1
应该是 @model MyServiceLibrary.EmailTemplateModelObject - user3559349
3
我认为这是C#语法,而不是VB.NET。 - brando
1
Web.config 是否适用于所有视图文件夹(以及您使用的任何区域)?如果您有更多的 Web.configs,请检查它们是否相似。 - Rowan Freeman
你的想法很对,Rowan。上面列出的web.config只在'views'目录中存在。我已经使用这些设置更新了主web.config……现在出现了奇怪的行为。ModelType现在被认可了,但是@Model没有被认可。我得到了100多个“未被认可的Model”编译错误。 - brando
我会让主要的Web.config文件保持不变,但会检查其他任何Web.config文件。 - Rowan Freeman
除了其他编译错误之外,我现在得到了以下错误: 类型“Nop.Web.Framework.ViewEngines.Razor.WebViewPage”未定义。 - brando
5个回答

4

创建新的MVC 5项目时,我遇到了一个非常相似的问题,尽管是 'Layout' 没有声明。

我打开了 TOOLS > NuGet 包管理器 > 管理解决方案中的 NuGet 包项,选择了 '已安装的包' 并点击了 '更新所有',这通过更新所有不同的 DLL 和 web.config 文件到最新版本来解决了我的问题。


3

2

在我的情况下,我正在为一个只有WebApi的项目使用“管理Nuget Packages…”添加MVC5。许多其他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:更新webpages:Version

更改

<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 stops working for ASP.NET MVC5 Controllers


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接