У меня довольно сложная страница с флажком:
// In the .aspx
<asp:CheckBox id="MyCheckBox" runat="server" text="Testing" />
// In the .aspx.cs
protected System.Web.UI.WebControls.CheckBox MyCheckBox;
Что я вижу, так это то, что после обратной отправки на страницу флажок каким-то образом заканчивается, когда его свойство Checked имеет значение true к моменту достижения события Page_Load
, и я не могу понять, почему - при нет смысла устанавливать значение флажка или каким-либо образом изменять его, на этой странице нет элементов управления повторителем, и флажок определенно не проверяется при отправке формы.
Хотя сама страница довольно сложна, взаимодействие с самим CheckBox совершенно тривиально - я уже потратил много времени, пытаясь выяснить, как значение Checked этого флажка устанавливается в true, но безуспешно - что такое отладка / диагностика, чтобы выяснить, почему этот флажок меняет проверенное значение?
ОБНОВЛЕНИЕ: Итак, я теперь переключился на использование HtmlInputCheckBox
элемента управления:
// In the .aspx
<input type="checkbox" id="TelephonyEnabledCheckBox" runat="server" />
// In the .aspx.cs
protected System.Web.UI.HtmlControls.HtmlInputCheckBox TelephonyEnabledCheckBox
Точно так же происходит и во время OnInit()
Checked - ложь, однако к тому времени, как я доберусь до Page_Load()
Checked - истина. Поле обязательно снимается при обратной передаче, и Request.Form["TelephonyEnabledCheckBox"]
равно "0"
(что означает, что оно не отмечено).
Что происходит? В настоящий момент я беспокоюсь, что мне придется прибегнуть к прямому использованию значений обратной передачи (однако было бы неплохо понять, что происходит)