Razor当前上下文中不存在名称“Model”

时间:2016-06-01 09:33:45

标签: c# asp.net-mvc visual-studio razor visual-studio-2015

首先,我已经阅读了有关该问题的所有问题。

是的,我已检查/删除了包含该视图的文件夹中的web.config文件。

是的,同一个文件夹中还有其他视图没有问题。

是的,在我的模型命名空间的同一命名空间中还有其他类(但不管是哪个类,我都会收到此错误。)

是的,我已经清理了解决方案。

是的,我重新启动了Visual Studio。

是的,我使用的是Visual Studio的最新版本(截至2015年,更新时为止)。

不,我对Razor页面,语法,web.config等没有任何看法。

不,我没有任何Visual Studio插件。

无论我尝试什么,Visual Studio都会告诉我模型在当前上下文中不存在仅针对特定文件。还有其他cshtml文件就像这个文件在同一个文件夹中一样,其中很多都有强类型模型(来自同一文件夹,具有相同的保护级别),并且它们都正常工作。问题存在于文件的开头:

enter image description here

有什么问题?

3 个答案:

答案 0 :(得分:4)

@model是用于指定模型类型的保留字。

使用@Model获取实例。

在您的情况下,只需为您的变量使用其他名称。

答案 1 :(得分:2)

来自this article的解决方案为我工作:

以管理员身份运行VS

然后跑 Uninstall-Package -Id Microsoft-Web-Helpers 其次是: Install-Package -Id Microsoft.AspNet.WebHelpers

答案 2 :(得分:1)

在发布问题时,我发现了错误。这是由于Visual Studio糟糕的Razor语法解析。

由于Model可能为null,我将其分配给一个新变量,如果它为null,我正在创建一个新实例(我无法直接分配给Model,因为它已被读取-only),变量名称为model

var model = Model;
if(model == null) {
  model = ...
}

反正。我正在使用那个保证为非空且具有一些值的model实例。下面,我使用的是<meta name="description" content="@model.Description" />,Razor认为我在看到@model时为页面声明了新的模型类型,而@则用于转义为C#和{{1}是我的变量名。我已将变量model更改为model(或其他任何不属于关键字的内容),问题就消失了。