2

我正在使用带有 RepeatLayout="UnorderedList" 的 asp.net asp:CheckBoxList

它始终将输出呈现为(为简洁起见,缺少一些值)

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

1 回答 1

0

如果您在控件上放置任何 CssClass 或其他属性,复选框将嵌套到一个跨度中。例如,如果您在代码中禁用复选框控件,则会在 span-tag 上设置“禁用”属性。我注意到它是因为 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 rendering

于 2012-05-02T08:09:18.337 回答