C# 在LI上设置类的自定义渲染复选框列表项

C# 在LI上设置类的自定义渲染复选框列表项,c#,asp.net,C#,Asp.net,我有一个复选框列表(框架版本4),RepeatLayout设置为UnOrderedList。我想在每个LI上生成一个类,以简化一些客户端编码和样式,但是,我无法得到它 我覆盖RenderItem方法,如下所示: protected override void RenderItem(ListItemType itemType, int repeatIndex, RepeatInfo repeatInfo, HtmlTextWriter writer) { ListItem item = I

我有一个复选框列表(框架版本4),RepeatLayout设置为UnOrderedList。我想在每个LI上生成一个类,以简化一些客户端编码和样式,但是,我无法得到它

我覆盖RenderItem方法,如下所示:

protected override void RenderItem(ListItemType itemType, int repeatIndex, RepeatInfo repeatInfo, HtmlTextWriter writer)
{
    ListItem item = Items[repeatIndex];
    String id = ClientID + "_" + repeatIndex.ToString();
    String name = UniqueID + "$" + repeatIndex.ToString();

    writer.Write(@"<li class='{0}'>", "tcsdrp_day" + (item.Selected ? " selected" : ""));
    writer.Write(@"<input id='{0}' type='checkbox' name='{1}' value='{2}'>", new object[] { id, name, item.Value });
    writer.Write(@"<label for='{0}'>{1}</label>", new object[] { id, item.Text });
    writer.Write(@"</li>");
}
protected override void RenderItem(ListItemType itemType,int repeatIndex,RepeatInfo RepeatInfo,HtmlTextWriter writer)
{
ListItem项目=项目[重复索引];
字符串id=ClientID+“”+repeatIndex.ToString();
字符串名称=UniqueID+“$”+repeatIndex.ToString();
writer.Write(@“
  • ”,“tcsdrp_day”+(item.Selected?“Selected”); writer.Write(@“”,新对象[]{id,name,item.Value}); writer.Write(@“{1}”,新对象[]{id,item.Text}); writer.Write(@“
  • ”); }
    然而,我得到了大量生成的空白LIs,所以很明显它们是在调用者或其他地方呈现的,我一生都无法确定它们在哪里

    现在通过将类添加到ListItems中解决了这个问题,但这会创建一个额外的跨度,理想情况下我希望失去这个跨度

    有什么好办法吗

    编辑:这是一个精简的演示;最终版本将具有基于原始数据项属性生成不同类的逻辑,以防有人想知道我为什么需要添加类

    编辑2:我现在已经解决了一个直接的问题,即通过将RenderItem更改为使用包装输入样式的标签来简化标记:

    writer.Write(@"<label class='{0}'>", labelclass);
    writer.Write(@"<input id='{0}' type='checkbox' name='{1}' value='{2}'{3}>", new object[] { id, name, item.Value, item.Selected ? " checked" : "" });
    writer.Write(item.Text);
    writer.Write(@"</label>");
    
    writer.Write(@“”,labelclass);
    writer.Write(@“”,新对象[]{id,名称,item.Value,item.Selected?“选中”:“});
    writer.Write(item.Text);
    作者:写(@“);
    

    我仍然想知道是否有任何方法可以完全自定义项目呈现。

    在PreRender事件中,迭代项目集合,并根据需要分配类:

    For Each l As ListItem In Items
      If l.Value = "1" Then
        l.Attributes.Add("class", "myClass")
      End If
    Next l