为什么我可以';t在asp:CheckBox上设置值
本文关键字:CheckBox 设置 asp 我可以 为什么 | 更新日期: 2023-09-27 18:26:57
没有属性Value
:
<asp:CheckBox ID="CheckBox1" runat="server" />
而在标准HTML上,这是允许的:
<input type="checkbox" ID="CheckBox1" value="My Valyue" />
为什么?
Text
属性用于呈现复选框的标签。
控件有一个InputAttributes
属性,您可以将其添加到:
myChk.InputAttributes.Add("value", "My Value");
我相信,如果您简单地将value
属性添加到标记中,它也会被填充。
您可以访问这样的值:
myChk.InputAttributes["value"];
为了回答为什么Value
不是CheckBox
控件的内置属性的问题:
处于隔离状态(仅凭其自身)的CheckBox
不需要任何值。根据定义,它是一个布尔值,由它的ID标识。你所需要做的就是检查它是否被检查过。
当对复选框进行分组时,该值就会发挥作用,并且有一个控件-使用ListItem
的CheckBoxList
-每个ListItem
都有一个Value
属性。
不要使用asp:CheckBox控件,而是使用html输入复选框,并在服务器上运行它。
<input type="checkbox" id="ck" runat="server" value='<%# Eval("Value") %>' />
<asp:Label ID="lbl" runat="server" AssociatedControlID="ck" Text='<%# Eval("Name") %>'></asp:Label>
现在,您可以从codeehind将其引用为HtmlInputCheckBox(我的最新示例是在中继器中,所以我可以用其他元素来装饰这个复选框列表的替代品,比如工具提示图像)。
foreach (RepeaterItem repeaterItem in repCheckboxes.Items)
{
HtmlInputCheckBox listItem = (HtmlInputCheckBox)repeaterItem.FindControl("ck");
if (listItem.Checked)
{
string val = listItem.Value;
...
我知道这并不能回答OP的"为什么",但在搜索这个确切的问题时,这是一个很好的解决方案。至于为什么,我认为MS忽略了它,因为你不能控制CheckBoxList 中的html