在我的MVC 4应用程序中进行了重大重构后,Razor在调试视图时显示了此错误:

当前上下文中不存在名称“model”。

这是有问题的代码行:

@model ICollection<DataSourceByActive>

我知道@model的用法是正确的。

为什么会这样?我该怎么解决呢?


当前回答

以下是我所做的:

关闭Visual Studio 删除SUO文件 重启Visual Studio

“.suo”文件是一个隐藏文件,与“.svn”解决方案文件位于同一文件夹中,包含Visual Studio用户选项。

其他回答

我试图添加一个视图,这是我的“视图”文件夹(只是组织我的代码不同,我猜),当我有这个问题。在Views中创建视图(按照惯例)解决了这个问题。

已经7年了。然而,我的情况有点不同。

所有的视图都工作正常。因此,改变网络。Config和nuget获取新库将无法工作,这可能会导致问题。

我的场景是我一直在做项目B,项目B是项目a的克隆,长话短说,很多时间,为了节省时间,我不得不从项目B复制代码到项目a。

这一次,我只复制了文件abc。cshtml,从项目B到项目A。项目B使用2015年开发。出于某种原因,这引起了问题。我不知道。总之,我去掉了abc。CSHTML并创建空白abc。CSHTML从头开始。然后我选择abc上的每一个东西。并将所有文本复制到项目A新创建的abc.cshtml中。

我的问题解决了

在我的情况下,我在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>
    }

如果你像我一样在项目上不做任何改变, 你需要改变你的网。配置,放置在视图文件夹。 只需通过输入或删除空行写入新行。然后保存你的网络。配置和重建。 我的问题用这个方法解决了

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

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