Razor View抛出"名称'模型'在当前上下文中不存在"

Keh*_*mme 180 asp.net-mvc razor asp.net-mvc-4

在我的MVC 4应用程序中进行了重大的重构之后,Razor在调试Views时显示了这个错误:

当前上下文中不存在名称"model".

这是令人讨厌的代码行:

@model ICollection<DataSourceByActive>
Run Code Online (Sandbox Code Playgroud)

我知道使用@model是正确的.

为什么会这样?我该如何解决?

Ani*_*pta 230

I think you have messed up the web.config file which lives in the Views folder.

Create a new project targeting the same .NET framework and copy its Views/web.config file on top of the one in your current project. This will fix your problem.

另外,正如Dudeman3000评论的那样,如果你的MVC项目中有区域,那么它们也都有Views\web.config文件.

  • "这将解决你的问题.它没有. (43认同)
  • 请记住,如果你的MVC项目中有区域,那么它们也都有Views\web.config文件! (20认同)
  • 奇怪的是我在views目录中的web.config很好,但该项目的web.config的网页版本为2.0.0.当我制作3.0.0时,错误的错误检测消失了. (5认同)
  • @AnirudhaGupta问题中的一个. (2认同)
  • 首先尝试[eaglei22的答案](/sf/answers/3448681771/)。在尝试其他解决方案(例如重新启动等)之前,请确保使用“@Model”而不是“@model”引用您的模型。 (2认同)

小智 97

确保Web.config在该Web.config部分的站点web.config和views目录中包含以下内容

<add key="webpages:Version" value="2.0.0.0" />
Run Code Online (Sandbox Code Playgroud)

对于MVC5使用:

<add key="webpages:Version" value="3.0.0.0" />
Run Code Online (Sandbox Code Playgroud)

(它只存在于主Web.config文件中.)

  • 谢谢!对于MVC5,版本号需要为"3.0.0.0".(它只存在于**main**Web.config文件中.) (12认同)
  • 这对我有用.我必须在此更改后重新启动Visual Studio以使一切正常. (5认同)

Mar*_*iss 47

这是我做的:

  1. 关闭Visual Studio
  2. 删除SUO文件
  3. 重新启动Visual Studio

.suo文件是与.svn解决方案文件位于同一文件夹中的隐藏文件,包含Visual Studio用户选项.

  • 使用VS2017社区,它工作. (7认同)
  • 我什至不必删除 SUO 文件。我刚刚关闭并打开了 Visual Studio。 (4认同)
  • Visual Studio 2019:没有 suo 文件,删除 `.vs` 文件夹有帮助。 (2认同)
  • Visual Studio 2019 在这里,关闭并重新打开为我修复了它。谢谢。 (2认同)

小智 25

我遇到了同样的问题,我创建了一个新项目,并按照Gupta的回答中的建议复制了web.config文件,但这并没有为我解决问题.我检查了Alex和Liam的回答,我认为这行必须是从新的web.config复制的,但看起来新项目本身没有这行(MVC5):

<add key="webpages:Version" value="3.0.0.0" />
Run Code Online (Sandbox Code Playgroud)

将该行添加到views/web.config文件为我解决了这个问题.


vin*_*gde 15

更改视图文件夹的web.config中的以下行解决了相同的错误.

 <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Run Code Online (Sandbox Code Playgroud)

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Run Code Online (Sandbox Code Playgroud)


Jus*_*les 10

在我的情况下,我最近从MVC 4更新到MVC 5,这搞砸了web.config非常糟糕.这篇文章帮助很大.

http://www.asp.net/mvc/overview/releases/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web- API-2

最重要的是,您需要检查web.config和Views/web.config中的所有版本号引用,以确保它们引用与MVC 5关联的正确升级版本.


eag*_*i22 8

从@model改为@Model为我完成了这项工作.

@model表示View Model对象类型.@Model表示View Model对象.


dda*_*san 7

我找到了解决方案.如果要更新剃刀版本或mvc 4到5,请更改一些行.

Views/web.config中的旧代码

<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
Run Code Online (Sandbox Code Playgroud)

替换为

<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>
Run Code Online (Sandbox Code Playgroud)

sectionGroup 也必须改变.


Ste*_*yer 7

我在 Visual Studio 2019 中使用了 MVC4 项目 - 结果发现 VS 2019 不支持开箱即用的 MVC 4。你必须安装这个。

脚步:

  • 打开 Visual Studio 安装程序(在 Windows 中搜索 Visual Studio 安装程序)
  • 单击单个组件
  • 在搜索框中输入“mvc”
  • 检查 mvc4 框
  • 点击右下角的“修改”

注意:需要关闭视觉工作室

在此处输入图片说明


Pra*_*ach 5

在我的例子中,以下代码有用.将下面的代码放在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>
Run Code Online (Sandbox Code Playgroud)

代码更新后,请确保清理并重建解决方案.我希望这会帮助你!


fun*_*urm 5

现有的答案都不为我工作,但我找到了比较的工作对我来说.csproj不同的项目文件。以下对.csprojXML 文件的手动编辑为我解决了 Razor-intellisense 问题,也许这可以帮助那些尝试了所有其他答案但无济于事的人。关键是删除's<Private>False</Private>中的任何实例<Reference>

<ItemGroup>
  <Reference Include="Foo">
    <HintPath>path\to\Foo</HintPath>
    <!-- <Private>False</Private> -->
  </Reference>
  <Reference Include="Bar">
    <HintPath>path\to\Bar</HintPath>
    <!-- <Private>True</Private> -->
  </Reference>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

我不知道那些人是如何到达那里的,也不知道他们究竟做了什么,也许比我更聪明的人可以添加这些信息。我很高兴终于解决了这个问题。