生成的 Razor 视图文件无法识别模型类

dis*_*kid 1 c# razor asp.net-core-mvc visual-studio-code asp.net-core

当我dotnet run使用 VS Code构建和运行 ( ) 我的 ASP.NET Core MVC 项目时,我收到以下两条错误消息:

obj/Debug/netcoreapp2.1/Razor/Views/Product/List.g.cshtml.cs(28,88): 错误 CS0246: 找不到类型或命名空间名称“ProductsListViewModel”(您是否缺少 using 指令或程序集参考?)[/Users/pedram/OneDrive - House of Friends AB/visualstudioonmacprojects/SportsStore/SportsStore.csproj]

obj/Debug/netcoreapp2.1/Razor/Views/Product/List.g.cshtml.cs(128,71):错误 CS0246:找不到类型或命名空间名称“ProductsListViewModel”(您是否缺少 using 指令或程序集参考?)[/Users/pedram/OneDrive - House of Friends AB/visualstudioonmacprojects/SportsStore/SportsStore.csproj]

构建失败。请修复构建错误并再次运行。

当我导航到提到的文件时,我意识到ProductsListViewModel需要SportsStore.Models.ViewModels.ProductsListViewModel在两个地方使用它的全名来寻址该类,以便项目正确构建。但这只能在下一次构建之前解决问题。

在构建 ( dotnet clean)之前清理项目似乎也无济于事。

我对obj文件夹内发生的事情没有太多控制权。是什么导致了这个缺少命名空间的问题?

更新:

的内容 /Views/Product/List.cshtml

@model ProductsListViewModel
@foreach (var p in Model.Products) {
    @Html.Partial("ProductSummary", p)
}
<div page-model="@Model.PagingInfo" page-action="List" page-classes-enabled="true"
     page-class="btn" page-class-normal="btn-secondary"
     page-class-selected="btn-primary" class="btn-group pull-right m-1">
</div>
Run Code Online (Sandbox Code Playgroud)

Kir*_*kin 6

在 .cshtml 文件的第一行,声明视图中使用的模型的类型。从错误消息中,很明显ProductsListViewModel无法解决。要解决该问题,您至少有两个选择:

  1. 使用@model SportsStore.Models.ViewModels.ProductsListViewModel,这是一个完全限定名称 (FQN)。
  2. 使用@using,像这样:

    @using SportsStore.Models.ViewModels
    @model ProductsListViewModel
    
    Run Code Online (Sandbox Code Playgroud)

主要是您应该选择哪个的偏好问题。

Visual Studio Code 似乎不像 Visual Studio 那样支持 Razor 文件——它似乎有不错的语法高亮支持,但似乎没有编译 .cshtml 文件以发现像你这样的编译错误拥有。

您第一次修改的文件 ( List.g.cshtml.cs) 是生成的文件,它是通过处理 .cshtml 文件生成的,不应修改。如果您修改它,它会在下次处理源 .cshtml 文件时被替换。