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

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

这是有问题的代码行:

@model ICollection<DataSourceByActive>

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

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


当前回答

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

其他回答

您可能会在代码中使用一个名为model的变量。

这里似乎有3个版本号设置需要彼此正确:

…包含。= . x.x.x Mvc,版本。x……(在各个地方~\Views\web.config) …System.Web.WebPages。= . x.x.x剃须刀,版本。x……(在各个地方~\Views\web.config) <add key="webpages:Version" value=" x.x.x.x。"x" />(在~\web.config中

对我有用的组合:

组合1:

包含。= 4.0.0.0 Mvc,版本

System.Web.WebPages。剃须刀,版本= 2.0.0.0之间

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

结合2:

包含。= 5.2.7.0 Mvc,版本

System.Web.WebPages。= 3.0.0.0剃须刀,版本

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

最后一个观察是网页:版本设置似乎是可选的。删除它似乎没有负面影响,至少在当前问题的背景下是这样。

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

确保在你的网站上都有以下内容。配置和视图目录Web。在appSettings部分配置

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

MVC5使用:

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

(而且它只存在于主Web中。配置文件)。

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