Значение ASP.NET Combo Box, кажется, меняется, когда я отключаю его в Javascript

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

Когда пользователь выбирает тип компонента, на стороне клиента запускается изменение на стороне клиента и при необходимости устанавливается значение поля со списком типа данных, а при необходимости отключается поле со списком типа данных. Вот странная вещь: когда эта форма отправляется, серверная сторона получает значение этого поля со списком типов данных, и это не то, что я установил!

Я, казалось бы, сузил его до одной строки JavaScript:

document.all("cmbDataType").disabled = true;

Если эта строка закомментирована, она все равно будет установлена ​​на правильное значение в зависимости от типа компонента, но не отключена, и отправка формы даст правильное значение серверу на основе значения, которое выберет клиент.

Если эта строка выполняется, то, несмотря на то, что пользователь видит правильное значение в этом отключенном поле со списком, возвращаемое на сервер значение является неправильным.

Я не смог найти кого-то еще с такой же проблемой, поэтому я надеюсь, что это не что-то сверхъестественное. Браузер IE7, веб-приложение ASP.NET 2.0. Спасибо за внимание!

12.12.2008 00:49:20
1 ОТВЕТ
РЕШЕНИЕ

Причина этого заключается в том, что ASP.NET 2.0 не передает значения отключенных элементов управления по умолчанию. (Точнее, он не обновляет значения серверного элемента управления при обратной передаче.) Вы можете переопределить это, добавив следующую строку в событие Page_Load:

Page.Form.SubmitDisabledControls = true;

Или вы можете установить значение в теге формы:

<form id="myForm" runat="server" SubmitDisabledControls="true">
2
12.12.2008 01:25:25
Большое спасибо! Я никогда не знал этого лакомого кусочка, и установка этого значения тега формы сразу же исправила его!
Coxy 12.12.2008 01:36:57