У меня наконец-то есть ответ, который я искал!
Элемент управления asp.net CheckboxList действительно фактически отображает атрибут value в HTML - он работает для меня на сайте Production уже более года! (У нас ВСЕГДА отключен EnableViewState для всех наших сайтов, и он все еще работает, без каких-либо настроек или хаков)
Однако внезапно он перестал работать однажды, и наши флажки CheckboxList больше не отображали свой атрибут value в HTML! WTF вы говорите? Мы тоже! Потребовалось время, чтобы понять это, но так как это работало раньше, мы знали, что должна быть причина. Причиной было случайное изменение нашего web.config!
<pages controlRenderingCompatibilityVersion="3.5">
Мы удалили этот атрибут из раздела конфигурации страниц, и это помогло!
Почему это так? Мы отразили код для элемента управления CheckboxList и нашли его в методе RenderItem:
if (this.RenderingCompatibility >= VersionUtil.Framework40)
{
this._controlToRepeat.InputAttributes.Add("value", item.Value);
}
Дорогие братья и сестры, не отчаивайтесь! ВСЕ ответы, которые я искал здесь, на Stackexchange, а остальная часть Интернета дали ошибочную информацию! Начиная с .Net 4.0 asp.net отображает атрибут value для флажков CheckboxList:
<input type="checkbox" value="myvalue1" id="someid" />
Возможно, практически бесполезно, Microsoft дала вам возможность добавить «controlRenderingCompatibilityVersion» в ваш web.config, чтобы отключить его, установив версию ниже 4, что для наших целей совершенно не нужно и фактически вредно, Код JavaScript основан на атрибуте значения ...
Мы получали chk.val () равным «on» для всех наших флажков, что изначально и предупредило нас об этой проблеме (используя jquery.val (), который получает значение флажка. out "on" - это значение флажка, который отмечен ... Узнайте каждый день).