【问题标题】:GetEnumSelectList overrides the default selected option valuesGetEnumSelectList 覆盖默认选择的选项值
【发布时间】:2021-02-10 11:00:03
【问题描述】:

我正在将 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>

如何克服这个问题?

【问题讨论】:

    标签: javascript asp.net-core-mvc html.dropdownlistfor


    【解决方案1】:

    你可以尝试两种方法:

    1.删除选择元素中的asp-for标签助手。手动添加其名称和 ID。

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

    2.编写js设置选中的选项:

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

    【讨论】: