在我的MVC 4应用程序中进行了重大重构后,Razor在调试视图时显示了此错误:
当前上下文中不存在名称“model”。
这是有问题的代码行:
@model ICollection<DataSourceByActive>
我知道@model的用法是正确的。
为什么会这样?我该怎么解决呢?
在我的MVC 4应用程序中进行了重大重构后,Razor在调试视图时显示了此错误:
当前上下文中不存在名称“model”。
这是有问题的代码行:
@model ICollection<DataSourceByActive>
我知道@model的用法是正确的。
为什么会这样?我该怎么解决呢?
当前回答
在我的例子中,我删除了web。配置文件不小心从视图文件夹。我把它加回来了,没问题。
其他回答
在web中更改下面的行。配置视图文件夹解决了同样的错误。
From
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
To
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
在我的案例中,问题是在将项目从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。配置文件在那里。
把它加进去,重新出版,就万事大吉了。
如果你像我一样在项目上不做任何改变, 你需要改变你的网。配置,放置在视图文件夹。 只需通过输入或删除空行写入新行。然后保存你的网络。配置和重建。 我的问题用这个方法解决了
把@Model改成@Model对我来说很管用。
@model表示视图模型对象类型。@Model表示视图模型对象。