首先,我已经阅读了有关该问题的所有问题。
是的,我已检查/删除了包含该视图的文件夹中的web.config
文件。
是的,同一个文件夹中还有其他视图没有问题。
是的,在我的模型命名空间的同一命名空间中还有其他类(但不管是哪个类,我都会收到此错误。)
是的,我已经清理了解决方案。
是的,我重新启动了Visual Studio。
是的,我使用的是Visual Studio的最新版本(截至2015年,更新时为止)。
不,我对Razor页面,语法,web.config等没有任何看法。
不,我没有任何Visual Studio插件。
无论我尝试什么,Visual Studio都会告诉我模型在当前上下文中不存在仅针对特定文件。还有其他cshtml
文件就像这个文件在同一个文件夹中一样,其中很多都有强类型模型(来自同一文件夹,具有相同的保护级别),并且它们都正常工作。问题存在于文件的开头:
有什么问题?
答案 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
(或其他任何不属于关键字的内容),问题就消失了。