У меня есть форма с некоторыми переключателями, которые по умолчанию отключены.
Когда значение вводится в текстовое поле, переключатели активируются через javascript. Затем пользователь выбирает один из переключателей и нажимает кнопку отправки, которая отправляет обратно на сервер.
Когда я возвращаюсь на сервер, переключатель, который щелкнул пользователь, не отображается как отмеченный. Я буду использовать rbSolid в качестве переключателя, на котором я сосредоточен.
Я обрабатываю событие 'onclick' радиокнопок, но у меня пока нет функции, делающей что-либо, кроме запуска:
Me.rbSolid.Attributes.Add("onclick", "styleLookupChanged(this);")
На клиенте это включает переключатель при изменении значения текстового поля:
document.getElementById("ctl00_MainLayoutContent_WebPanel4_rbSolid").disabled = false;
Затем я нажимаю переключатель, а затем отправляю сообщение с помощью кнопки, но на сервере это всегда неверно:
If Me.rbSolid.Checked Then...
Если у меня по умолчанию включен переключатель, он отображается правильно.
Спасибо за любую помощь!





Это связано с тем, как данные обратной передачи ASP.NET. Если элемент управления отключен control.enabled = false при отображении страницы, значения не будут отправлены обратно на сервер. Как я решал это в прошлом, так это установить флаг disabled с помощью тегов атрибутов вместо использования свойства Enabled. Поэтому вместо control.enabled = false вы используете control.attributes.add("disabled", "disabled").
У меня это не работает.
Я добавил:
Me.rbSolid.Style.Add("background-color", "red")
Me.rbSolid.Style.Add("disabled", "true")
и стиль фона работает, но disabled - нет. Он по-прежнему доступен для редактирования при рендеринге формы.
Вот исходник после загрузки:
<span style = "font-family:Verdana;font-size:8pt;background-color:red;Disabled:true;">
<input id = "ctl00_MainLayoutContent_WebPanel4_rbSolid" type = "radio" name = "ctl00$MainLayoutContent$WebPanel4$DetailType" value = "rbSolid" onclick = "styleLookupChanged(this);"/>
<label for = "ctl00_MainLayoutContent_WebPanel4_rbSolid">Solid</label>
</span>
Извините, это должен быть me.rbSolid.Attributes.Add ("отключено", "отключено"). Это должно решить вашу проблему. Я отредактировал свой исходный ответ, чтобы отразить это исправление.
по-видимому, отключен - это атрибут html, а не атрибут css. если вы отключите переключатель на стороне сервера в asp.net, а затем проверите визуализированный html, переключатель будет встроен в тег span с его отключенным атрибутом, установленным в значение true. Вместо этого вы можете попробовать настроить таргетинг на диапазон кнопки (родительский элемент, у него нет идентификатора) и установить disabled = false в своем javascript, чтобы увидеть, работает ли это
Как вы отключаете указанные радиокнопки? Вы отключаете их в JavaScript или делаете это через код на стороне сервера?