Razor视图抛出“名称模型”在当前上下文中不存在“

我只是在整个MVC 4应用程序中做了一堆重构,现在我正在尝试去debugging我的Views,Razor给了我这个无意义的错误:

The name 'model' does not exist in the current context. 

从零开始意义上说,这是造成错误的部分:

 @model ICollection<DataSourceByActive> 

我知道@model是正确的Razor语法。

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

我认为你已经搞乱了生活在Views文件夹中的web.config文件。

创build一个新的项目,以相同的.NET框架为目标,并将其Views / web.config文件复制到当前项目的顶部

这将解决您的问题。

另外,Dudeman3000评论说:“如果你在MVC项目中有区域,他们也都有Views \ web.config文件!”

请确保在appSettings部分的网站web.config和views目录web.config中都具有以下内容

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

对于MVC5使用:

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

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

我有同样的问题,我创build了一个新的项目,并按照Gupta的答案build议复制web.config文件,但这并没有解决我的问题。 我检查了亚历克斯和利亚姆的答案,我认为这行必须从新的web.config复制,但它看起来像新项目本身没有这一行(MVC5):

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

将该行添加到views / web.config文件解决了我的问题。

这是我做的:

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

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

在我的情况下,我最近从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相关的正确升级版本。

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

  <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 

 <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 

在我的情况下,下面的代码被发现是有用的。 将下面的代码放在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> 

代码更新后,请确保清理并重build解决scheme。 我希望这会帮助你!

我find了一个解决scheme。 如果您想更新剃刀版本或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> 

replace为

 <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> 

sectionGroup必须改变。

对我来说,这个问题是我最近导入的其中一个库中的一个冲突的.NET版本。 我导入的库是为4.5.2编译的,ASP.NET MVC网站我将它导入到了4.5版本。 重新编译所述的lib为4.5后,网站将comppile。

另外,没有编译错误,但这个问题被报告为“警告”。 所以一定要阅读所有的警告,如果有的话。

在我的情况下,问题是,将项目从MVC 4升级到MVC 5后,我不知何故错过了Views / web.config中的版本更改:

  <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"> 

它仍然有旧的2.0.0.0版本。 在将版本更改为3.0.0.0之后,所有事情都开始正常工作。

另外,由于这个问题,每当我打开一个.cshtml文件的时候,Visual Studio 2015 Community Edition就会启动CPU的闲置(空闲时使用30-40%)。

我试图在我的“视图”文件夹之外添加一个视图(只是为了组织我的代码,我猜),当我遇到这个问题的时候。 在Views中创build视图(按照惯例)解决了这个问题。

在我的情况下,我在foreach的开头就错过了@

  @foreach (var item in Model) { <tr class="clickable-row"> <td class="clickable-field"> @Html.DisplayFor(modelItem => item.Label) </td> <td class="clickable-field hidden-xs"> @Html.DisplayFor(modelItem => item.Value) </td> </tr> } 

您必须重新启动Visual Studio以使这些答案中的任何更改生效!

我觉得这需要一些曝光,因为你尝试了很多的变化,并可能find正确的组合,但永远不知道,除非你真的试图重新启动,并可能错过修复所有在一起。

打印variables时,我通过使用@Model而不是仅仅model来解决问题。

您可能会在代码中使用名为model的variables。