1

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

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

并在 !Page.isPostback 时在 aspx 页面的 c# 代码隐藏中填充 onload:

 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>
4

1 回答 1

3

我相信价值观应该是独一无二的。因为您有多个True,False值,所以当它将其标记为选中时,它会将第一个具有该值的值作为选中。为什么要使用这些值?您可以使用与文本相同的值,或更改如下值:

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"));

那应该行得通。

于 2013-07-31T21:18:22.820 回答