我有一个表单的下拉列表:
<asp:DropDownList runat="server" CssClass="holdTypeDDL" ID="holdTypeDDL"></asp:DropDownList>
并在asp.com页面的c#代码隐藏中填充onload!Page.isPostback 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,则不会将其视为已选中。即回发后所选索引为0。如果选择了一个带有true的项目并且在回发时抓取了值,则它可以正常工作。
我找不到任何关于原因的文件。为什么在option元素的值中有一个“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>
答案 0 :(得分: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"));
这应该有效。