我在视图中使用以下语法从我班级的Enum
创建下拉列表。错误是
缺少一个或多个编译引用。可能的原因包括应用程序
preserveCompilationContext
中buildOptions
下的project.json
属性丢失。
<div class="form-group">
<select asp-for="Subscription" class="form-control" asp-items="@new SelectList(Enum.GetNames(typeof(SubscriptionTypes)))">
<option disabled selected value="">Select a Subscription</option>
</select>
</div>
班级中的Enum
是:
public enum SubscriptionTypes
{
Type1, Type2, Type3
}
答案 0 :(得分:1)
您应该使用内置生成器来生成用户友好的值。请参见[Display(Name =“带空格的酷名称”]]枚举值的注释。
Html.GetEnumSelectList<CountryEnum>()
因此您的剃须刀页面如下所示:
@model CountryEnumViewModel
<form asp-controller="Home" asp-action="IndexEnum" method="post">
<select asp-for="EnumCountry"
asp-items="Html.GetEnumSelectList<Some.NameSpace.CountryEnum>()">
</select>
<br /><button type="submit">Register</button>
</form>
答案 1 :(得分:0)
此问题的常见根本原因是在未指定SubscriptionTypes
指令时使用非完全限定类型名称(如using
)。
要解决此问题,请在源代码顶部添加using
指令:
@using Your.Namespace.Here
或使用完全限定的类型名称:
<select asp-for="Subscription" class="form-control" asp-items="@new SelectList(Enum.GetNames(typeof(Your.Namespace.Here.SubscriptionTypes)))">