代码之家  ›  专栏  ›  技术社区  ›  disasterkid

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

  •  1
  • disasterkid  · 技术社区  · 7 年前

    dotnet run

    obj/Debug/netcoreapp2.1/Razor/Views/Product/List.g.cshtml.cs(28,88): 找不到(是否缺少using指令或程序集 参考用户/pedram/OneDrive-House of Friends AB/visualstudioonmacprojects/sportstore/sportstore.csproj]

    obj/Debug/netcoreapp2.1/Razor/Views/Product/List.g.cshtml.cs(128,71): 参考用户/pedram/OneDrive-House of Friends AB/visualstudioonmacprojects/sportstore/sportstore.csproj]

    生成失败。请修复生成错误并重新运行。

    当我浏览到上面提到的文件时,我意识到 ProductsListViewModel 需要用它的全名 SportsStore.Models.ViewModels.ProductsListViewModel 在这两个地方的项目建设正确。但这只能在下一次构建之前解决问题。

    dotnet clean

    目标 文件夹。是什么导致了这个缺少命名空间的问题?

    更新:

    /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>
    
    1 回复  |  直到 7 年前
        1
  •  6
  •   Kirk Larkin    7 年前

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

    1. 使用 @model SportsStore.Models.ViewModels.ProductsListViewModel
    2. @using

      @using SportsStore.Models.ViewModels
      @model ProductsListViewModel
      

    主要地

    VisualStudio代码似乎不像VisualStudio那样支持Razor文件—它似乎有不错的语法突出显示支持,但似乎没有编译.cshtml文件以发现像您所遇到的编译错误。

    你第一次修改的文件( List.g.cshtml.cs )是一个 文件,该文件是在处理.cshtml文件时生成的,不应修改。如果您确实修改了它,它将在下次处理源.cshtml文件时被替换。