我知道默认的 .NET CheckBox 控件不支持 Value 属性。这对我来说似乎很奇怪,因为输入控件确实支持值作为 html 规范的一部分。
所以我的问题是这里是否有人知道asp.net 的自定义用户控件,其行为类似于标准的ASP .NET CheckBox 和CheckBoxList?
我知道默认的 .NET CheckBox 控件不支持 Value 属性。这对我来说似乎很奇怪,因为输入控件确实支持值作为 html 规范的一部分。
所以我的问题是这里是否有人知道asp.net 的自定义用户控件,其行为类似于标准的ASP .NET CheckBox 和CheckBoxList?
也许我误解了你的问题,但你知道你也可以使用典型的 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 复选框值属性设置为您喜欢的任何值。
如果您只需要在服务器端访问它,您可以轻松创建一个继承 Checkbox 控件的服务器控件,并向其添加一个名为 value 的属性,该属性可以从服务器端设置和检索。
但是,如果您需要从客户端访问它,您将不得不对服务器控件呈现的内容充满想象力 - 可能是复选框和隐藏字段的组合,其中隐藏字段包含值。
如果您所做的只是在服务器端提取复选框的值,我想一个简单的复选框控件扩展就足够了 - 添加一个可以从服务器端设置和检索的额外属性.. 。 在公园里散步。
不,他们不一样
我正在开发的功能需要将产品升级列表显示为复选框列表。根据“选中”的复选框,我需要将它们添加到产品中。CheckBoxList 中的项目是动态的,因此当我遍历选中的项目时,我需要某种唯一标识符。“Checked”值只是一个布尔值
MS 在这里所做的是为他们创建了带有 .net 感觉的 ASP 控件。但是,由于它们应该与浏览器一起使用,因此它们呈现为标准 HTML 控件。
所以在cs/vb 的代码隐藏中,你会看到.Checked (bool),而在客户端/javascript 中你会看到.value。
如果您想要的是唯一标识符,那么您需要查看 ID 或 ClientID。或者,您可以将属性添加到复选框 (.Attributes.Add()) 并使用它。
似乎这些值没有在 html 中呈现,但仍存储在视图状态中。因此,当我访问 CheckboxList.Items() 中的 ListItem 对象时,我能够在服务器端提取值
您可以通过覆盖 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);
}
}
这是一个老问题,但情况已经改变。首先,在 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;
}
“Checked”和“Value”不一样吗?
http://www.w3schools.com/aspnet/control_checkbox.asp
进去看看。您实际上并不需要专门命名为“Value”的属性,因为“Checked”将为您提供相同的信息。