在ASP.NET Core中,'model'这个名称在当前上下文中不存在。

28 浏览
0 Comments

在ASP.NET Core中,'model'这个名称在当前上下文中不存在。

我正在尝试使用ASP.NET Core开发带有插件的网站。我的主项目是一个正常运行的ASP.NET Web应用程序。我有一个包含控制器的类库项目,也能正常工作,但是在视图方面遇到了问题。当我打开*.cshtml文件时,我发现Razor不起作用- @using、@model和其他指令无法被识别,智能感知也无法正常工作。当我悬停在model上时,会显示以下错误信息:\n

\nThe name \'model\' does not exist in current context in ASP.NET Core(在ASP.NET Core中,当前上下文中不存在\'model\'的名称)\n

\n我使用EmbeddedFileProvider来发现视图,并将其标记为嵌入资源。当我运行应用程序时,一切正常-视图正确渲染。我唯一的问题是Visual Studio中的错误提示。我在谷歌上搜索了类似的问题,但主要是针对ASP.NET MVC而不是Core-像这里。我认为类库配置中缺少了一些东西,但我不确定具体是什么。

0
0 Comments

在ASP.NET Core中出现"The name 'model' does not exist in current context"错误的原因是项目中的csproj文件使用了不正确的SDK。在新的csproj文件中,顶级"Project"元素有一个"Sdk"属性。当创建新的Web应用程序时,该属性会被设置为"Web" SDK:

<Project Sdk="Microsoft.NET.Sdk.Web">...</Project>

当添加/创建一个类库时,默认使用标准的非Web SDK:

<Project Sdk="Microsoft.NET.Sdk">...</Project>

据我所知,Web SDK会导入额外的任务,以允许在设计时对Web资源进行处理,例如Razor视图。将插件类库中的SDK更改为Web。

"Web"项目的另一个参数是默认输出一个EXE文件,因此还需要在插件的csproj文件中添加以下内容:

<PropertyGroup>
    <OutputType>Library</OutputType>
</PropertyGroup>

谢谢!这正是我在从旧的project.json升级到新的VS17类型时所丢失的部分。我的项目使用的是Microsoft.Net.Sdk而不是sdk.web。

我也遇到了同样的问题,在MVC网站项目中,使用了你所说的sdk指令,但是所有的视图中都将Model类型标记为错误,无法识别。

0