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

C# Razor中的当前上下文中不存在名称“Model”,c#,asp.net-mvc,visual-studio,razor,visual-studio-2015,C#,Asp.net Mvc,Visual Studio,Razor,Visual Studio 2015,首先,我已经阅读了所有关于这个问题的问题 是,我已在包含视图的文件夹中选中/删除了我的web.config文件 是的,同一文件夹中还有其他视图,没有问题 是的,在与我的模型名称空间相同的名称空间中还有其他类,但是不管是哪个类,我都会遇到这个错误 是的,我已经清洗了溶液 是的,我重新启动了Visual Studio 是的,我正在使用Visual Studio的最新版本2015更新2 不,我对Razor页面、语法、web.config等没有任何幻想 不,我没有任何VisualStudio插件 无论我

首先,我已经阅读了所有关于这个问题的问题

是,我已在包含视图的文件夹中选中/删除了我的web.config文件

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

是的,在与我的模型名称空间相同的名称空间中还有其他类,但是不管是哪个类,我都会遇到这个错误

是的,我已经清洗了溶液

是的,我重新启动了Visual Studio

是的,我正在使用Visual Studio的最新版本2015更新2

不,我对Razor页面、语法、web.config等没有任何幻想

不,我没有任何VisualStudio插件

无论我尝试什么,VisualStudio总是告诉我,模型在当前上下文中不存在,只存在于特定文件中。在同一文件夹中还有其他cshtml文件与此文件相同,其中许多文件具有来自同一文件夹的强类型模型,具有相同的保护级别,并且它们都工作正常。问题仅存在于文件的开头:


怎么了?

在发布问题时,我已经找出了错误。这是由于VisualStudio糟糕的Razor语法解析造成的

由于模型可能为空,我将其分配给一个新变量,如果为空,我将创建一个无法直接分配给模型的新实例,因为它是只读的,并且变量的名称为Model:


无论如何。我使用的是那个模型实例,它被保证为非null并且有一些值。下面,我正在使用,Razor认为当它看到@model时,我正在为页面声明一个新的模型类型,而@model用于转义到C中,model是我的变量名。我已经将可变模型更改为m或其他任何不是关键字的模型,问题就消失了。

在发布问题时,我已经找出了错误。这是由于VisualStudio糟糕的Razor语法解析造成的

由于模型可能为空,我将其分配给一个新变量,如果为空,我将创建一个无法直接分配给模型的新实例,因为它是只读的,并且变量的名称为Model:

无论如何。我使用的是那个模型实例,它被保证为非null并且有一些值。下面,我正在使用,Razor认为当它看到@model时,我正在为页面声明一个新的模型类型,而@model用于转义到C中,model是我的变量名。我已将Variable model更改为m或其他任何不是关键字的选项,问题就消失了。

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

使用@Model获取实例

在您的情况下,只需为变量使用另一个名称。

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

使用@Model获取实例

在您的情况下,只需为变量使用另一个名称。

来自的解决方案适用于我:

以管理员身份运行VS

然后跑 卸载软件包-Id Microsoft Web Helpers 然后: 安装包-Id Microsoft.AspNet.WebHelpers

来自的解决方案适用于我:

以管理员身份运行VS

然后跑 卸载软件包-Id Microsoft Web Helpers 然后:
安装包-Id Microsoft.AspNet.WebHelpers

@CharlesMager您看不到代码的开头吗?请仔细阅读,模型已分配。@CharlesMager难道看不到代码的开头吗?请仔细阅读,型号已指定。
var model = Model;
if(model == null) {
  model = ...
}