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

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

这是有问题的代码行:

@model ICollection<DataSourceByActive>

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

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


当前回答

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

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

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

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

我的问题解决了

其他回答

使用无效的表达式会触发这样的编译器错误。在下面的场景中,预期的lambda表达式应该是=>,而不是==>

我在nopCommerce中遇到了这个问题,我将插件的视图部分复制到nopCommerce \Plugins下的输出文件夹中,但视图需要是一个嵌入式资源。因此,.csthml文件的错误构建操作是“内容”,而它应该是“嵌入式资源”,不需要复制。

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

对我来说,问题是我最近导入的一个库中的. net版本冲突。我导入的库是为4.5.2和ASP。NET MVC站点我把它导入了目标4.5。重新编译后说库4.5网站将编译。

此外,没有编译错误,但这个问题被报告为“警告”。因此,如果有任何警告,请务必阅读所有警告。

我有同样的问题,我创建了一个新的项目,并复制了网络。在Gupta的回答中推荐配置文件,但这并没有为我解决问题。我检查了Alex和Liam的答案,我认为这一行一定是从新网页上复制的。config,但它看起来像新项目本身没有这一行(MVC5):

<add key="webpages:Version" value="3.0.0.0" />

添加一行到views/web。配置文件解决了我的问题。