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文件解决了我的问题。
这是我做的:
- closuresVisual Studio
- 删除SUO文件
- 重新启动Visual Studio
.suo文件是与.svn解决scheme文件位于同一文件夹中的隐藏文件,其中包含Visual Studio用户选项。
在我的情况下,我最近从MVC 4更新到MVC 5,拧紧web.config相当糟糕。 这篇文章非常有帮助。
底线是您需要检查您的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。