You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core从Enum生成SelectList报错:缺少编译引用

解决Razor视图中使用Enum创建下拉列表时的编译引用缺失问题

嘿,这个报错我之前帮不少开发者排查过,核心原因确实和preserveCompilationContext属性有关,下面给你一步步的解决办法:

1. 检查并修改project.json文件

首先找到你项目根目录下的project.json,打开后定位到buildOptions节点:

  • 如果已经有buildOptions,直接在里面添加"preserveCompilationContext": true
  • 如果没有这个节点,就先创建它,最终的配置大概长这样:
{
  "buildOptions": {
    "preserveCompilationContext": true,
    // 其他已有的build配置,比如outputName、emitEntryPoint等
  },
  // 项目其他配置
}

2. 确保视图正确引用Enum

除了配置问题,还要确认视图里能正确访问到你的Enum类型:

  • 在视图顶部添加Enum所在命名空间的引用,比如@using YourProjectName.Models(假设Enum放在Models文件夹下)
  • 举个实际的下拉列表代码例子(假设你的Enum叫OrderStatus):
@model YourProjectName.ViewModels.OrderViewModel
@Html.DropDownListFor(m => m.SelectedStatus, new SelectList(Enum.GetValues(typeof(OrderStatus))), "请选择订单状态")

3. 重新编译并重启项目

保存project.json后,先清理一下项目的编译缓存,然后重新编译,最好重启一下你的开发服务器(比如IIS Express),这样新的配置才能生效。

如果是用较新版本的.NET Core(已经改用.csproj而不是project.json),那对应的配置要放在.csproj文件里,添加下面的节点:

<PropertyGroup>
  <PreserveCompilationContext>true</PreserveCompilationContext>
</PropertyGroup>

内容的提问来源于stack exchange,提问作者coolhand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:17:50