asp.net - 可空枚举下拉列表无法按预期工作
问题描述
我有一个模型,其中包含一个可以为空的枚举,如下所示:
public class UserSearch : GenericSearch
{
[Display(Name="User Status", Description = "Filter results by user status")]
public UserStatus? UserStatus { get; set; } = new UserStatus();
}
public enum UserStatus
{
Active,
Inactive,
Locked
}
我请求模型的编辑器模板,如下所示:
@Html.EditorFor(x => x.UserStatus)
我的“Enum.cshtml”模板如下:
@model Enum
<div class="form-group">
<label asp-for="@Model" class="m-b-none d-block"></label>
<help-text asp-for="@Model"></help-text>
<div class="input-group">
<select asp-for="@Model" asp-items="@new SelectList(Enum.GetValues(Model.GetType()))" class="form-control">
<option value="">Please select an option</option>
</select>
<partial name="_ValidationIcon" />
</div>
<span asp-validation-for="@Model" class="validation-message"></span>
</div>
问题:
- 下拉菜单默认为第一个枚举选项,我希望它默认为我的占位符选项。当我尝试将selected="selected"添加到占位符选项 Enum 选项时,仍然选择了“Active”枚举选项。
- 标签或我的帮助文本跨度不呈现?
如果我使我的UserStatus不可为空,则标签会呈现:
例如
public class UserSearch : GenericSearch
{
[Display(Name = "User Status", Description = "Filter results by user status")]
public UserStatus UserStatus { get; set; } = new UserStatus();
}
为什么是这样?
相比之下,在一个较旧的 MVC5 项目中,无论 Enum 是否可以为空,我都有以下工作:
@model Enum
@Html.LabelFor(m => m, new { @class = "m-b-none" })
@Html.DescriptionFor(m => m)
<div class="input-group">
@Html.EnumDropDownListFor(m => m, new { @class = "form-control" })
@Helpers.ValidationIcon()
@Html.ValidationMessageFor(m => m, null, new { @class = "validation-message" })
</div>
我尝试改用 @Html.LabelFor 而不是标签标签助手,但得到了相同的结果。
解决方案
推荐阅读
- javascript - 歌曲和弦歌词格式预览不起作用
- windows - 通过代理从个人计算机访问公共 PostgreSQL 服务器 (Amazon RDS)
- azure - 获取 azure 磁盘信息 csv
- plotly - Plotly:渲染 3D 网格椭圆体时的视觉伪影
- reactjs - 在 React 中提交表单后如何显示消息?
- java - Java - 在本机查询中设置 currentDate 时间?
- vue.js - 如何在 vue-cli 项目上没有任何新库和配置的情况下将 png 文件导入为 base64 字符串?
- c++ - 为什么 C++ 中 size_t 和 unsigned int 的混合模除会出错
- docker - 复制 docker 卷
- python - M1 Mac如何安装llvm