Почему я не могу установить значение для asp: CheckBox? - PullRequest
8 голосов
/ 07 марта 2012

Нет атрибута Value:

<asp:CheckBox ID="CheckBox1" runat="server" />

в стандартном HTML это разрешено:

<input type="checkbox" ID="CheckBox1" value="My Valyue" />

почему

Ответы [ 2 ]

23 голосов
/ 07 марта 2012

Свойство Text используется для отображения метки для флажка.

Элемент управления имеет свойство InputAttributes, к которому можно добавить:

myChk.InputAttributes.Add("value", "My Value");

Я полагаю, что если вы просто добавите атрибут value к разметке, он также будет заполнен.

Вы можете получить доступ к значению следующим образом:

myChk.InputAttributes["value"];

Чтобы ответить на вопрос , почему Value не является встроенным атрибутом элемента управления CheckBox:

A CheckBox изолированно (само по себе) не нуждается в значении. По определению это логическое значение и идентифицируется по его идентификатору. Все, что вам нужно сделать, это проверить, был ли он проверен или нет.

Значение вступает в действие, когда вы группируете флажки, и для этого есть элемент управления - CheckBoxList, который использует ListItem - каждый ListItem имеет свойство Value.

2 голосов
/ 25 сентября 2018

Вместо использования элемента управления 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>

Теперь вы можете ссылаться на него из codebehind как HtmlInputCheckBox (мой последний пример находится внутри повторителя, поэтому я могу украсить этот заменитель для списка флажков другими элементами, такими как изображение всплывающей подсказки).

foreach (RepeaterItem repeaterItem in repCheckboxes.Items)
{
    HtmlInputCheckBox listItem = (HtmlInputCheckBox)repeaterItem.FindControl("ck");
    if (listItem.Checked)
    {
         string val = listItem.Value;
         ...

Я знаю, что это не отвечает на вопрос «почему» ОП, но это поднимается высоко в поисках именно этой проблемы, и это хорошее решение. Что касается того, почему, я думаю, что MS обманывают, оставляя это без внимания, поскольку вы не можете контролировать html в CheckBoxList

...