在我的MVC 4应用程序中进行了重大重构后,Razor在调试视图时显示了此错误:
当前上下文中不存在名称“model”。
这是有问题的代码行:
@model ICollection<DataSourceByActive>
我知道@model的用法是正确的。
为什么会这样?我该怎么解决呢?
在我的MVC 4应用程序中进行了重大重构后,Razor在调试视图时显示了此错误:
当前上下文中不存在名称“model”。
这是有问题的代码行:
@model ICollection<DataSourceByActive>
我知道@model的用法是正确的。
为什么会这样?我该怎么解决呢?
当前回答
在我的例子中,下面的代码被认为是有用的。放在下面的网页代码。“视图”文件夹下的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>
一旦代码更新,请确保清理并重新构建解决方案。我希望这对你有所帮助!
其他回答
在我的案例中,问题是在将项目从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之后,一切都开始正常工作。
此外,由于这个问题,Visual Studio 2015 Community Edition每次打开.cshtml文件时都会开始敲打CPU(空闲时占用30-40%)。
如果你像我一样在项目上不做任何改变, 你需要改变你的网。配置,放置在视图文件夹。 只需通过输入或删除空行写入新行。然后保存你的网络。配置和重建。 我的问题用这个方法解决了
我在部署到Azure应用程序服务时遇到了同样的问题
在我的例子中,是因为~/Views/Web。配置没有包含在项目中。
它在IIS Express中工作,但当我部署到azure时,我得到了同样的错误。由于没有包含在.csproj文件中,所以它没有被部署。
解决方案是确保~/Views/Web。配置包含在项目中。
如果您转到解决方案资源管理器并单击“显示所有文件”图标,然后打开视图,您可能会看到一个未包含的Web。配置文件在那里。
把它加进去,重新出版,就万事大吉了。
现有的答案都不适合我,但我通过比较不同项目的.csproj文件找到了适合我的答案。下面对.csproj xml文件的手动编辑为我解决了剃刀智能感知问题,也许这可以帮助那些尝试了所有其他答案都无济于事的人。关键是删除<Reference>'s中<Private>False</Private>的任何实例:
<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>
我不知道它们是怎么来的,也不知道它们到底是干什么的,也许比我聪明的人可以补充这些信息。我很高兴终于解决了这个问题。
以我为例,我最近从MVC 4更新到MVC 5,这把web搞砸了。配置很糟糕。这篇文章帮助很大。
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
底线是你需要检查你的网页中所有的版本号引用。config和Views/web。配置,以确保他们引用了与MVC 5相关的正确升级版本。