我知道默认的.NET CheckBox控件不支持Value属性。这对我来说似乎很奇怪,因为输入控件支持将值作为html规范的一部分。
所以我的问题是这里是否有人知道asp.net的自定义用户控件,其行为类似于标准ASP .NET CheckBox和CheckBoxList?
答案 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”会给你相同的信息。