选项设置为false的ASP下拉列表

本文关键字:ASP 下拉列表 false 设置 选项 | 更新日期: 2023-09-27 18:25:53

我有一个表单的下拉列表:

 <asp:DropDownList runat="server" CssClass="holdTypeDDL" ID="holdTypeDDL"></asp:DropDownList>

并且在aspx页面的c#codebehind中加载时填充!Page.is Postback via:

 holdTypeDDL.Items.Add(new ListItem(string.Empty, false.ToString()));
            holdTypeDDL.Items.Add(new ListItem(HoldTypeType.Now.Description(), false.ToString()));
            holdTypeDDL.Items.Add(new ListItem(HoldTypeType.AAHoldType.Description(), true.ToString()));
            holdTypeDDL.Items.Add(new ListItem(HoldTypeType.AAAHoldType.Description(), true.ToString()));
            holdTypeDDL.Items.Add(new ListItem(HoldTypeType.AAAAHoldType.Description(), false.ToString()));

我注意到,如果选择了字符串值为False的select选项之一,它就不会认为它是选中的。即,回发后所选索引为0。如果选择了具有true的项,并且在回发时获取值,则工作正常。

我找不到任何关于为什么会这样的文档。为什么在选项元素的值中有一个"False"字符串会导致它不能正确返回?

编辑:

HTML中的呈现方式如下:

<select class="holdTypeDDL" id="BodyContent_holdTypeDDL" name="ctl00$BodyContent$holdTypeDDL">
    <option value="False"></option>
    <option value="False">Now</option>
    <option value="True">AA Hold Type</option>
    <option value="True">AAA Hold Type</option>
    <option value="False">AAAA Hold Type</option>
</select>

选项设置为false的ASP下拉列表

我认为值应该是唯一的。因为您有多个TrueFalse值,所以当它将其标记为选定时,它会将第一个具有该值的值作为选定值。为什么要使用这些值?你可以使用与文本相同的值,或者像这样更改值:

holdTypeDDL.Items.Add(new ListItem(string.Empty, false.ToString() + "0"));
holdTypeDDL.Items.Add(new ListItem(HoldTypeType.Now.Description(), false.ToString() + "1"));
holdTypeDDL.Items.Add(new ListItem(HoldTypeType.AAHoldType.Description(), true.ToString() + "2"));
holdTypeDDL.Items.Add(new ListItem(HoldTypeType.AAAHoldType.Description(), true.ToString() + "3"));
holdTypeDDL.Items.Add(new ListItem(HoldTypeType.AAAAHoldType.Description(), false.ToString() + "4"));

这应该行得通。