【问题标题】:ASP Dropdown list with options set to false选项设置为 false 的 ASP 下拉列表
【发布时间】:2013-08-01 05:18:22
【问题描述】:

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

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

当 !Page.isPostback via 时,在 c# 代码隐藏的 aspx 页面中填充 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 的选项,则不会认为它已被选中。 IE。回发后选定的索引为 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>

【问题讨论】:

  • 它在 HTML 中是如何呈现的?
  • 如果我选择“现在”并回发,它显示选定索引 = 0。如果我选​​择 AAAA 持有类型,它显示选定索引 = 0。如果我选​​择 AA 持有类型,它显示选定索引 = 2
  • 将其更改为 False 以外的其他内容可以修复它。

标签: c# asp.net .net-4.0 webforms html-select


【解决方案1】:

我认为价值观应该是独一无二的。因为您有多个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"));

应该可以的。

【讨论】:

  • Javascript/JQuery 不会那样做。也许拥有唯一值通常是最佳实践,但在这种情况下,在回发时我通过文本抓取,并允许 javascript 在用户填写表单时根据值是真还是假来做一些事情。最终为什么 asp.net 会有这种行为?选择的索引应该是被选择的索引,不管值是什么。
  • 你可以添加ListItem,然后给它们添加一些属性,通过jQuery或者Javascript来访问它们。
  • 原因基本上是表单有两个部分,根据选择的部分,是否需要。这就是javascript部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多