在我的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" />

我觉得你把网络搞砸了。config文件,它位于Views文件夹中。

创建一个新的项目,目标是相同的。net框架,并复制它的Views/web。配置文件的顶部在您的当前项目。这将解决你的问题。

此外,正如Dudeman3000评论的那样,如果你的MVC项目中有区域,它们都有视图\web。配置文件。

我在部署到Azure应用程序服务时遇到了同样的问题

在我的例子中,是因为~/Views/Web。配置没有包含在项目中。

它在IIS Express中工作,但当我部署到azure时,我得到了同样的错误。由于没有包含在.csproj文件中,所以它没有被部署。

解决方案是确保~/Views/Web。配置包含在项目中。

如果您转到解决方案资源管理器并单击“显示所有文件”图标,然后打开视图,您可能会看到一个未包含的Web。配置文件在那里。

把它加进去,重新出版,就万事大吉了。

我找到了解决办法。 如果你想更新razor版本或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>

取而代之的是

<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也必须更改。

把@Model改成@Model对我来说很管用。

@model表示视图模型对象类型。@Model表示视图模型对象。