我想将标签(或div)的值设置为元素而不是文本。
例如,此代码创建了一个复选框列表,如本帖子How to use Checkbox inside Select Option所示:
<asp:Label runat="server" id="checkboxesList">
<label for="one">
<input type="checkbox" id="one" />First checkbox</label>
<label for="two">
<input type="checkbox" id="two" />Second checkbox</label>
<label for="three">
<input type="checkbox" id="three" />Third checkbox</label>
</asp:Label>
我需要在CodeBehind中创建列表,而不是在尝试的ASPX中直接创建列表:
checkboxesList.Text = "<label for=\"one\"> < input type = \"checkbox\" id = \"one\" /> First checkbox </ label > <label for= \"two\" > < input type = \"checkbox\" id = \"two\" /> Second checkbox </ label >";
这样做只会打印为字符串,而不会创建差异标签。 如何从刚刚实现的代码中实现它:
<asp:Label runat="server" id="checkboxesList">
</asp:Label>
答案 0 :(得分:0)
没有必要使用服务器端控件来生成所有HTML元素。可以将HTML直接用于容器元素。仅将服务器端控件用于应从服务器代码访问的元素。
<div id="checkboxes">
<label>
<asp:CheckBox ID="one" runat="server" Text="First checkbox" />
</label>
<label>
<asp:CheckBox ID="two" runat="server" Text="Second checkbox" />
</label>
<label>
<asp:CheckBox ID="three" runat="server" Text="Third checkbox" />
</label>
</div>
该代码段允许您获取/设置服务器端复选框的值和文本。另外,您还可以为每个复选框添加服务器端点击事件处理程序。
请注意,for
属性用于将<label>
与未放置在<input>
内的<label>
绑定。此外,IE不支持该属性。因此,根据您的情况,可以将复选框放置到标签中,而不使用for
属性。
在一般情况下,您还需要了解HTML id
属性不等于ASP ID
值。因此,如果要使用for
属性链接控件,请通过ClientID
属性设置id
属性值。
答案 1 :(得分:-1)
谢谢大家的回答。
我最终决定使用CheckBoxList:
<asp:Label runat="server" id="LabelList">
<asp:CheckBoxList runat="server" ClientIDMode="Predictable" DataValueField="Value" DataTextField="Name" ID="specificInfoListControl" Width="150">
</asp:CheckBoxList>
</asp:Label>
然后我用:
检索值。foreach (ListItem item in specificInfoListControl.Items)
{
if (item.Selected)
{
}
}