GetEnumSelectList 覆盖默认选择的选项值

GetEnumSelectList overrides the default selected option values

我正在将 EnumData 加载到下拉列表中,但默认值被覆盖了。当我将 Enum 的默认值更改为以 1 而不是 0(因为它是默认值)开始时,到那时显示默认值,但如果 Enum 从 0(默认值)开始,则下拉列表中的默认选择值将覆盖第一个枚举选择。

下面是我的代码:

  <div class="form-group row">
    <label asp-for="Feature" class="col-md-4 control-label"></label>
    <div class="col-md-8">
      <select asp-for="Feature" asp-items="Html.GetEnumSelectList<Features.FeatureType>()">
        <option selected="selected" value="">Please select</option>
      </select>
     </div>
  </div>

当我在浏览器中打开开发人员工具时,看到 2 个下拉值 selected 属性分配给了“selected”。

<option selected="**selected**" value="">Please select</option>
<option selected="**selected**" value="0">Feature 0</option>
<option value="1">Feature 1</option>
<option value="2">Feature 2</option>
<option value="3">Feature 3</option>

如何克服这个问题?

您可以尝试两种方式:

1.Remove select 元素中的 asp-for 标签助手。手动添加其名称和 ID。

  <select name="Feature" id="Feature" asp-items="Html.GetEnumSelectList<Features.FeatureType>()">
      <option selected="selected" value="">Please select</option>
  </select>

2.Write js 设置 selected 选项:

<script>
    $("select").prop("selectedIndex", 0);
</script>