在我的MVC 4应用程序中进行了重大重构后,Razor在调试视图时显示了此错误:
当前上下文中不存在名称“model”。
这是有问题的代码行:
@model ICollection<DataSourceByActive>
我知道@model的用法是正确的。
为什么会这样?我该怎么解决呢?
在我的MVC 4应用程序中进行了重大重构后,Razor在调试视图时显示了此错误:
当前上下文中不存在名称“model”。
这是有问题的代码行:
@model ICollection<DataSourceByActive>
我知道@model的用法是正确的。
为什么会这样?我该怎么解决呢?
当前回答
在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" />
其他回答
已经7年了。然而,我的情况有点不同。
所有的视图都工作正常。因此,改变网络。Config和nuget获取新库将无法工作,这可能会导致问题。
我的场景是我一直在做项目B,项目B是项目a的克隆,长话短说,很多时间,为了节省时间,我不得不从项目B复制代码到项目a。
这一次,我只复制了文件abc。cshtml,从项目B到项目A。项目B使用2015年开发。出于某种原因,这引起了问题。我不知道。总之,我去掉了abc。CSHTML并创建空白abc。CSHTML从头开始。然后我选择abc上的每一个东西。并将所有文本复制到项目A新创建的abc.cshtml中。
我的问题解决了
确保在你的网站上都有以下内容。配置和视图目录Web。在appSettings部分配置
<add key="webpages:Version" value="2.0.0.0" />
MVC5使用:
<add key="webpages:Version" value="3.0.0.0" />
(而且它只存在于主Web中。配置文件)。
在我的例子中,我删除了web。配置文件不小心从视图文件夹。我把它加回来了,没问题。
在我的情况下,我在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>
}
我试图添加一个视图,这是我的“视图”文件夹(只是组织我的代码不同,我猜),当我有这个问题。在Views中创建视图(按照惯例)解决了这个问题。