以编程方式将标签放入div或label

时间:2018-10-15 10:18:28

标签: c# asp.net

我想将标签(或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>

2 个答案:

答案 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)
  {
  }
}