为什么我不能在asp上设置一个值:CheckBox?

时间:2012-03-07 09:57:42

标签: c# .net checkbox

没有属性Value

<asp:CheckBox ID="CheckBox1" runat="server" />

在标准HTML上允许这样做:

<input type="checkbox" ID="CheckBox1" value="My Valyue" />

为什么?

2 个答案:

答案 0 :(得分:22)

Text属性用于为复选框呈现标签。

该控件具有InputAttributes属性,您可以将其添加到:

myChk.InputAttributes.Add("value", "My Value");

我相信如果您只是将value属性添加到标记中,也会填充此内容。

您可以像这样访问值:

myChk.InputAttributes["value"];

要回答为什么 Value不是CheckBox控件的内置属性的问题:

孤立的CheckBox(仅靠它自己)不需要任何价值。根据定义,它是一个布尔值,由其ID标识。您需要做的就是检查是否已经检查过。

当您分组复选框并且有一个控件时,该值会起作用 - 使用CheckBoxListListItem - 每个ListItem确实有一个Value财产。

答案 1 :(得分:2)

使用html输入复选框,然后在服务器上运行它,而不是使用asp:CheckBox控件。

<input type="checkbox" id="ck" runat="server" value='<%# Eval("Value") %>' />
<asp:Label ID="lbl" runat="server" AssociatedControlID="ck" Text='<%# Eval("Name") %>'></asp:Label>

现在,您可以从代码后面将其作为HtmlInputCheckBox引用(我的最新示例在转发器内部,因此我可以用其他元素(例如工具提示图像)来装饰此复选框列表的替代品)。

foreach (RepeaterItem repeaterItem in repCheckboxes.Items)
{
    HtmlInputCheckBox listItem = (HtmlInputCheckBox)repeaterItem.FindControl("ck");
    if (listItem.Checked)
    {
         string val = listItem.Value;
         ...

我知道这不能回答OP的“为什么”问题,但是在搜索此确切问题时非常重要,这是一个很好的解决方案。至于为什么,我认为MS忽略了它,因为您无法控制CheckBoxList中的html