【问题标题】:Generated Razor view file does not recognise the model class生成的 Razor 视图文件无法识别模型类
【发布时间】:2018-10-24 12:08:29
【问题描述】:

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

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

obj/Debug/netcoreapp2.1/Razor/Views/Product/List.g.cshtml.cs(128,71): 错误 CS0246:类型或命名空间名称“ProductsListViewModel”可能 找不到(您是否缺少 using 指令或程序集 参考?)[/Users/pedram/OneDrive - 朋友之家 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>

【问题讨论】:

  • 我不知道VS Code,但是VS会编译,但是如果你在错误列表下查看,它会显示类丢失。

标签: c# razor asp.net-core visual-studio-code asp.net-core-mvc


【解决方案1】:

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

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

    @using SportsStore.Models.ViewModels
    @model ProductsListViewModel
    

主要是你应该选择的偏好问题。

Visual Studio Code 似乎不支持 Razor 文件以及 Visual Studio - 它似乎有不错的语法高亮支持,但似乎没有编译 .cshtml 文件以发现类似的编译错误你有。

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

【讨论】:

  • 此解决方案也适用于 JetBrains Rider (2020.2.1)。似乎 Rider 也受到同样的限制
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-13
  • 1970-01-01
  • 2020-05-22
  • 1970-01-01
  • 2019-08-12
  • 2016-08-06
  • 1970-01-01
相关资源
最近更新 更多