Отключенная кнопка-переключатель теряет значение после обратной передачи

У меня есть два переключателя, которые отключены с помощью javascript при загрузке страницы. RadioButton1 проверяется по умолчанию. Когда я нажимаю кнопку, чтобы сделать обратную передачу, RadioButton1 больше не проверяется.

Кто-нибудь знает, почему?

Вот пример моего кода. Код позади пуст.

<asp:RadioButton ID="RadioButton1" runat="server"  GroupName="group" Checked="true"/>
<asp:RadioButton ID="RadioButton2" runat="server" GroupName="group" />
<asp:Button ID="Button1" runat="server" Text="Button"></asp:Button>
<script type="text/javascript">
    window.onload = function () {
        var RadioButton1 = document.getElementById('<%= RadioButton1.ClientID %>');
        var RadioButton2 = document.getElementById('<%= RadioButton2.ClientID %>');

        RadioButton1.disabled = true;
        RadioButton2.disabled = true;
    };
</script>

Ответ 1

Это поведение HTML, а не ASP.NET. После того как вы пометили элемент ввода как отключенный, он больше не отправляется в запрос. Для текстовых полей этого можно избежать, используя Readonly insted of Disabled, но я думаю, что это не работает для флажков или переключателей. Если вы все же хотите опубликовать это значение, вы должны отправить его в скрытое поле, связанное с переключателем, и обработать его вручную на сервере.

Изменить:

Здесь вы можете прочитать об элементах с отключенным и readonly и о представлении формы:

Отключено управление:

Отключенное управление не может быть успешным.

Контроль только для чтения:

Элементы только для чтения могут быть успешными.

Подача формы:

Успешный контроль действителен для представление. Каждый успешный контроль имеет свое контрольное имя в паре с его текущее значение как часть предоставленного формы данных. Успешный контроль должен быть определен внутри элемента формы и должно иметь управляющее имя.

Однако:

  • Элементы управления, которые отключены, не могут быть успешными.

Ответ 2

Что, поскольку отключенные элементы <input> не отправляют какое-либо значение серверу при обратной передаче, а радиокнопки не сохраняют свое проверенное состояние в ViewState, поэтому он также не может быть сохранен.

Поскольку оба RadioButton1 и RadioButton2 отключены, их имя (group) не будет частью обратной передачи, а ASP.NET очистит их как результат.

Ответ 3

Попробуйте сделать вместо этого атрибут readonly="readonly". При отключенном входе не будет опубликовано значение.

http://www.w3schools.com/tags/att_input_readonly.asp

Ответ 4

Если отключенные элементы, чем они, не будут отправлены при обратной передаче. Прежде чем вы выполните обратную передачу, вы должны сначала включить их. Пример в jQuery:

 $('#<%= Button1.ClientID %>').click(function () { RadioButton1.disabled = false;
                                                   RadioButton2.disabled = false; });

Ответ 5

Или при создании отключенного флажка/радиообмена на уровне сервера также создайте тег <input type='hidden'.. для того же имени. Это опубликует ваше значение.