支持Value属性的.NET CheckBox控件

时间:2009-01-07 02:12:14

标签: asp.net checkbox user-controls checkboxlist

我知道默认的.NET CheckBox控件不支持Value属性。这对我来说似乎很奇怪,因为输入控件支持将值作为html规范的一部分。

所以我的问题是这里是否有人知道asp.net的自定义用户控件,其行为类似于标准ASP .NET CheckBox和CheckBoxList?

8 个答案:

答案 0 :(得分:2)

也许我误解了你的问题,但是你知道你也可以使用典型的HTML控件吗?

例如,创建一个ASPX页面并添加以下源:

    <div>
            <input type="checkbox" runat="server" id="chkBox" value="test" />
            <asp:Label ID="lblCheckboxValue" runat="server" />
    </div>

    <asp:Button runat="server" OnClick="Button_Click" />

然后在你的代码后面添加以下代码:

protected void Button_Click(object sender, EventArgs e)
        {
            if (chkBox.Checked)
                lblCheckboxValue.Text = chkBox.Value;
            else
                lblCheckboxValue.Text = "";

        }

您可以将html复选框值属性设置为您喜欢的任何内容。

答案 1 :(得分:1)

如果您只需要在服务器端访问它,您可以轻松创建一个继承Checkbox控件的服务器控件,并为其添加一个名为value的属性,该属性可以从服务器端设置和检索。

如果您需要从客户端访问它,那么您将不得不想象服务器控件呈现的内容 - 可能是复选框和隐藏字段的组合,其中隐藏字段包含值。

如果您所做的只是提取服务器端复选框的值,我会想象复选框控件的简单扩展就足够了 - 添加一个可以从服务器设置和检索的额外属性一边......在公园散步。

答案 2 :(得分:0)

不,他们不一样

我正在处理的功能要求产品升级列表显示为CheckBoxes列表。根据“已选中”复选框,我需要将它们添加到产品中。 CheckBoxList中的项是动态的,所以当我遍历检查项时,我需要某种唯一标识符。 “已检查”值仅为布尔值

答案 3 :(得分:0)

MS在这里做了什么,创建了他们的ASP控件,带有.net感觉。但是,由于它们应该与浏览器一起使用,因此它们呈现作为标准HTML控件。

所以在代码隐藏的cs / vb中,你看到.Checked(bool),而在client / javascript中你看到.value。

如果您想要的是唯一标识符,那么您需要查看ID或ClientID。或者,您可以向checkboxt(.Attributes.Add())添加一个属性并使用它。

答案 4 :(得分:0)

似乎值不在html中呈现,但仍存储在viewstate中。因此,当我访问CheckboxList.Items()中的ListItem对象时,我能够在服务器端获取值。

答案 5 :(得分:0)

您可以通过覆盖CheckBox来创建自己的自定义控件。这是我刚刚创建的一个示例,用于添加Value属性可用服务器和客户端:

public class ValueCheckBox : CheckBox
{
    public string Value
    {
        get;
        set;
    }

    protected override void Render(System.Web.UI.HtmlTextWriter writer)
    {
        writer.AddAttribute("value", this.Value);
        base.Render(writer);
    }
}

答案 6 :(得分:0)

这是一个老问题,但事情已经发生了变化。首先,在asp.net 4.6中,将在复选框上设置value属性。这些答案很少与CheckBoxList相关,后者使用ListItem类生成复选框。

我对4.6之前的解决方案是添加数据属性。这会在复选框和标签周围创建一个<span>控件,您可以使用javascript找到它。

        foreach( ListItem item in selCheckList.Items)
        {
            item.Attributes["data-role-id"] = item.Value;
        }

答案 7 :(得分:-1)

“Checked”不是和“Value”相同吗?

http://www.w3schools.com/aspnet/control_checkbox.asp

看看那边。你真的不需要一个专门命名为“Value”的属性,因为“Checked”会给你相同的信息。