【问题标题】:.NET CheckBox control that supports Value property支持 Value 属性的 .NET CheckBox 控件
【发布时间】:2009-01-07 02:12:13
【问题描述】:

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

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

【问题讨论】:

  • 仅供参考。在 .NET 4.6 中,正在设置 value 属性。不在 4.5 中

标签: asp.net checkbox user-controls checkboxlist


【解决方案1】:

也许我误解了你的问题,但你知道你也可以使用典型的 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 复选框值属性设置为您喜欢的任何值。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      不,它们不一样

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

      【讨论】:

      • 它应该还有一个ID,你可以使用那个属性。
      【解决方案4】:

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

      因此,在代码隐藏 cs/vb 中,您会看到 .Checked (bool),而在客户端/javascript 中,您会看到 .value。

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

      【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

        您可以通过覆盖 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);
            }
        }
        

        【讨论】:

          【解决方案7】:

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

          我对 pre-4.6 的解决方案是添加一个数据属性。这会在复选框和标签周围创建一个 &lt;span&gt; 控件,您可以使用 javascript 找到该控件。

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

          【讨论】:

            【解决方案8】:

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

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

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

            【讨论】:

              猜你喜欢
              • 2021-06-05
              • 1970-01-01
              • 2021-10-20
              • 2011-01-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-05-10
              相关资源
              最近更新 更多