Asp.net复选框列表随机渲染范围

时间:2012-04-27 19:01:18

标签: asp.net webforms checkboxlist

我正在使用asp.net asp:CheckBoxList with RepeatLayout =“UnorderedList”

它始终将输出呈现为(为简洁而缺少某些值)

<ul class="checkbox unstyled">
  <li><input type="checkbox" value="17"><label>Label Name</label></li>              
</ul>

但突然之间我得到一个渲染到列表中的范围

<ul class="checkbox unstyled">
  <li><span alt="17"><input type="checkbox" value="17"><label>Label Name</label></span></li>                
</ul>

由以下代码生成

<div class="control-group" >                
  <label class="control-label" id="Label2">Available Mailing Lists</label>
    <div class="controls">            
      <asp:CheckBoxList id="chklSubs" runat="server" RepeatLayout="UnorderedList" CssClass="checkbox unstyled"></asp:CheckBoxList>
    </div>
</div>

它正在弄乱我的CSS并使列表中断。为什么我会得到这个范围,我该如何摆脱它呢?

旁注我正在使用twitter bootstrap设计样式。

完整输出

<ul id="ContentPlaceHolderDefault_override_innerPageOverRide_BoilerplateMainContentPlaceHolder_ctl00_SignUpCtl_4_chklSubs" class="checkbox unstyled">
  <li><span alt="7"><input id="ContentPlaceHolderDefault_override_innerPageOverRide_BoilerplateMainContentPlaceHolder_ctl00_SignUpCtl_4_chklSubs_0" type="checkbox" name="ctl00$ctl00$ctl00$ContentPlaceHolderDefault$override$innerPageOverRide$BoilerplateMainContentPlaceHolder$ctl00$SignUpCtl_4$chklSubs$0" value="7"><label for="ContentPlaceHolderDefault_override_innerPageOverRide_BoilerplateMainContentPlaceHolder_ctl00_SignUpCtl_4_chklSubs_0">Energy Express Newsletter</label></span></li>
</ul>

1 个答案:

答案 0 :(得分:0)

如果在控件上放置任何CssClass或其他属性,则复选框将嵌套到span中。如果在代码中禁用了复选框控件,则会在span-tag上设置“disabled”属性。我注意到它,因为jQuery无法使用输入选择器删除此属性(仅在IE中不起作用)。

这适用于所有普通浏览器,请尝试以下方法:

$("div#" + value + " input:checked").removeAttr('disabled');

你需要添加它才能让它在IE中运行:

$("div#" + value + " span").removeAttr('disabled');

看看这里: C# asp.net: How to remove span tag from WebControl when rendered