2

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

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

4

8 回答 8

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 复选框值属性设置为您喜欢的任何值。

于 2009-01-08T06:32:33.640 回答
1

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

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

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

于 2009-01-07T02:29:26.143 回答
0

不,他们不一样

我正在开发的功能需要将产品升级列表显示为复选框列表。根据“选中”的复选框,我需要将它们添加到产品中。CheckBoxList 中的项目是动态的,因此当我遍历选中的项目时,我需要某种唯一标识符。“Checked”值只是一个布尔值

于 2009-01-07T02:20:27.567 回答
0

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

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

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

于 2009-01-07T02:24:25.110 回答
0

似乎这些值没有在 html 中呈现,但仍存储在视图状态中。因此,当我访问 CheckboxList.Items() 中的 ListItem 对象时,我能够在服务器端提取值

于 2009-01-09T06:20:44.600 回答
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);
    }
}
于 2012-06-25T18:19:06.193 回答
0

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

我对 pre-4.6 的解决方案是添加一个数据属性。这将围绕复选框和标签创建一个<span>控件,您可以使用 javascript 找到该控件。

        foreach( ListItem item in selCheckList.Items)
        {
            item.Attributes["data-role-id"] = item.Value;
        }
于 2016-10-10T07:27:43.437 回答
-1

“Checked”和“Value”不一样吗?

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

进去看看。您实际上并不需要专门命名为“Value”的属性,因为“Checked”将为您提供相同的信息。

于 2009-01-07T02:14:33.257 回答